Search in sources :

Example 11 with SM2

use of cn.hutool.crypto.asymmetric.SM2 in project hutool by looly.

the class SM2Test method encryptAndSignTest.

@Test
public void encryptAndSignTest() {
    SM2 sm2 = SmUtil.sm2();
    String src = "Sm2Test";
    byte[] data = sm2.encrypt(src, KeyType.PublicKey);
    byte[] sign = sm2.sign(src.getBytes(StandardCharsets.UTF_8));
    Assert.assertTrue(sm2.verify(src.getBytes(StandardCharsets.UTF_8), sign));
    byte[] dec = sm2.decrypt(data, KeyType.PrivateKey);
    Assert.assertArrayEquals(dec, src.getBytes(StandardCharsets.UTF_8));
}
Also used : SM2(cn.hutool.crypto.asymmetric.SM2) Test(org.junit.Test)

Example 12 with SM2

use of cn.hutool.crypto.asymmetric.SM2 in project hutool by looly.

the class SM2Test method sm2SignAndVerifyHexTest.

@Test
public void sm2SignAndVerifyHexTest() {
    String content = "我是Hanley.";
    final SM2 sm2 = SmUtil.sm2();
    String sign = sm2.signHex(HexUtil.encodeHexStr(content));
    boolean verify = sm2.verifyHex(HexUtil.encodeHexStr(content), sign);
    Assert.assertTrue(verify);
}
Also used : SM2(cn.hutool.crypto.asymmetric.SM2) Test(org.junit.Test)

Example 13 with SM2

use of cn.hutool.crypto.asymmetric.SM2 in project hutool by looly.

the class SM2Test method sm2PlainWithPointTest.

@Test
public void sm2PlainWithPointTest() {
    // 测试地址:https://i.goto327.top/CryptTools/SM2.aspx?tdsourcetag=s_pctim_aiomsg
    String d = "FAB8BBE670FAE338C9E9382B9FB6485225C11A3ECB84C938F10F20A93B6215F0";
    String x = "9EF573019D9A03B16B0BE44FC8A5B4E8E098F56034C97B312282DD0B4810AFC3";
    String y = "CC759673ED0FC9B9DC7E6FA38F0E2B121E02654BF37EA6B63FAF2A0D6013EADF";
    String data = "434477813974bf58f94bcf760833c2b40f77a5fc360485b0b9ed1bd9682edb45";
    String id = "31323334353637383132333435363738";
    final SM2 sm2 = new SM2(d, x, y);
    // 生成的签名是64位
    sm2.usePlainEncoding();
    String sign = "DCA0E80A7F46C93714B51C3EFC55A922BCEF7ECF0FE9E62B53BA6A7438B543A76C145A452CA9036F3CB70D7E6C67D4D9D7FE114E5367A2F6F5A4D39F2B10F3D6";
    Assert.assertTrue(sm2.verifyHex(data, sign));
    String sign2 = sm2.signHex(data, id);
    Assert.assertTrue(sm2.verifyHex(data, sign2));
}
Also used : SM2(cn.hutool.crypto.asymmetric.SM2) Test(org.junit.Test)

Example 14 with SM2

use of cn.hutool.crypto.asymmetric.SM2 in project hutool by looly.

the class SM2Test method dLengthTest.

@Test
public void dLengthTest() {
    final SM2 sm2 = SmUtil.sm2();
    Assert.assertEquals(64, sm2.getDHex().length());
    Assert.assertEquals(32, sm2.getD().length);
    // 04占位一个字节
    Assert.assertEquals(65, sm2.getQ(false).length);
}
Also used : SM2(cn.hutool.crypto.asymmetric.SM2) Test(org.junit.Test)

Example 15 with SM2

use of cn.hutool.crypto.asymmetric.SM2 in project hutool by looly.

the class SM2Test method sm2SignAndVerifyUseKeyTest.

@Test
public void sm2SignAndVerifyUseKeyTest() {
    String content = "我是Hanley.";
    KeyPair pair = SecureUtil.generateKeyPair("SM2");
    final SM2 sm2 = new SM2(pair.getPrivate(), pair.getPublic());
    byte[] sign = sm2.sign(content.getBytes(StandardCharsets.UTF_8));
    boolean verify = sm2.verify(content.getBytes(StandardCharsets.UTF_8), sign);
    Assert.assertTrue(verify);
}
Also used : KeyPair(java.security.KeyPair) SM2(cn.hutool.crypto.asymmetric.SM2) Test(org.junit.Test)

Aggregations

SM2 (cn.hutool.crypto.asymmetric.SM2)19 Test (org.junit.Test)19 KeyPair (java.security.KeyPair)3 PrivateKey (java.security.PrivateKey)3 PublicKey (java.security.PublicKey)1 ECPrivateKeyParameters (org.bouncycastle.crypto.params.ECPrivateKeyParameters)1 OpenSSHPrivateKeySpec (org.bouncycastle.jcajce.spec.OpenSSHPrivateKeySpec)1 Ignore (org.junit.Ignore)1