//生成公钥对
KeyPair pair = SecureUtil.generateKeyPair("SM2");
//私钥
String privateKeyStr = Base64.getEncoder().encodeToString(pair.getPrivate().getEncoded());
//公钥
String publicKeyStr =Base64.getEncoder().encodeToString(pair.getPublic().getEncoded());
System.out.println("私钥 "+privateKeyStr);
System.out.println("公钥 "+publicKeyStr);
//私钥 MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgmm2JbLLoT7MZ7ogoCi/afBsdAal48g8ZI6NQd4dtFzCgCgYIKoEcz1UBgi2hRANCAARgoWxOT60TAXdafBdJQqiqqsqNL04S77dmnEEjl96odmcq8tEpZIcm9893Whk89J2Cr5H9G2v3N2fAGi15v0C4
//公钥 MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEYKFsTk+tEwF3WnwXSUKoqqrKjS9OEu+3ZpxBI5feqHZnKvLRKWSHJvfPd1oZPPSdgq+R/Rtr9zdnwBoteb9AuA==
//私钥签名
String content = "我是大鹏";
SM2 sm2 = SmUtil.sm2(privateKeyStr,null);
String sign = sm2.signHex(HexUtil.encodeHexStr(content));
//公钥验签
SM2 sm2PublicKeyStr = SmUtil.sm2(null,publicKeyStr);
// true
boolean verify = sm2PublicKeyStr.verifyHex(HexUtil.encodeHexStr(content), sign);
//公钥加密
// 公钥加密,私钥解密
SM2 sm2publicKeyStr = SmUtil.sm2(null, publicKeyStr);
String encryptStr = sm2publicKeyStr.encryptBcd(content, KeyType.PublicKey);
//私钥解密
SM2 sm2privateKeyStr = SmUtil.sm2(privateKeyStr, null);
String decryptStr = StrUtil.utf8Str(sm2privateKeyStr.decryptFromBcd(encryptStr, KeyType.PrivateKey));
hutool SM2(秘钥对、签名、验签、加密、解密)
最新推荐文章于 2024-02-22 09:41:39 发布