首先引入maven依赖
<dependency> <groupId>org.bouncycastlegroupId> <artifactId>bcprov-jdk15to18artifactId> <version>1.69version>dependency><dependency> <groupId>cn.hutoolgroupId> <artifactId>hutool-allartifactId> <version>5.8.16version>dependency>
然后运行以下代码
KeyPair pair = SecureUtil.generateKeyPair("SM2");byte[] privateKey = pair.getPrivate().getEncoded();byte[] publicKey = pair.getPublic().getEncoded();//私钥String privateKeyStr=Base64.getEncoder().encodeToString(privateKey);//公钥String publicKeyStr=Base64.getEncoder().encodeToString(publicKey);
就可以得到私钥和公钥
公钥提供给通讯方验签
下面是签名的代码
String content = "我是Hanley.";final SM2 sm2 = SmUtil.sm2(privateKeyStr,null);String sign = sm2.signHex(HexUtil.encodeHexStr(content));
验签代码
final SM2 sm2 = SmUtil.sm2(null,publicKeyStr);// trueboolean verify = sm2.verifyHex(HexUtil.encodeHexStr(content), sign);
加密
// 公钥加密,私钥解密SM2 sm2 = SmUtil.sm2(null, publicKey);String encryptStr = sm2.encryptBcd(text, KeyType.PublicKey);
解密
// 公钥加密,私钥解密SM2 sm2 = SmUtil.sm2(privateKeyStr, null);String decryptStr = StrUtil.utf8Str(sm2.decryptFromBcd(encryptStr, KeyType.PrivateKey));
好了,以上就是sm2util的使用介绍了,hutool还有很多强大的工具类,方便程序员们的调用
来源地址:https://blog.csdn.net/t_1000poke/article/details/131928448