java,用hutool的SM2工具将前端传过来已经用公钥加密之后的密码进行解密,公钥私钥已经存在,可以直接使用,不需要生成
时间: 2024-04-29 08:25:45 浏览: 136
登陆密码使用SM2加密传输,SM2加解密,前台vue,后台Java;
下面是使用hutool的SM2工具进行密码解密的示例代码:
```java
import cn.hutool.crypto.asymmetric.SM2;
import cn.hutool.crypto.asymmetric.KeyType;
// 公钥字符串
String publicKeyStr = "04e6ae8f10c4e4d4d4f4d4f4d4f4d4f4d4f4d4f4d4f4d4f4d4f4d4f4d4f4d4f\n" +
"4f4d4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4d\n" +
"4f4d4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4d\n" +
"4f4d4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4d\n" +
"4f4d4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4d\n" +
"4f4d4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4d\n" +
"4f4d4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4d\n" +
"4f4d4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4f4d4f4d4f4d4f4d";
// 将公钥字符串转换为byte数组
byte[] publicKeyBytes = publicKeyStr.replaceAll("\\s+", "").getBytes();
// 创建SM2对象
SM2 sm2 = new SM2(null, publicKeyBytes);
// 加密后的密码字符串
String encryptedPwdStr = "F1C4DB4C4B4F1B7BECE6BB5B2827F8E8A7286F5F6D5F6C5B6B38B9B3EA3D3E6";
// 将加密后的密码字符串转换为byte数组
byte[] encryptedPwdBytes = HexUtil.decodeHex(encryptedPwdStr);
// 使用SM2对象进行解密
byte[] decryptedPwdBytes = sm2.decrypt(encryptedPwdBytes, KeyType.PublicKey);
// 将解密后的byte数组转换为字符串
String decryptedPwdStr = new String(decryptedPwdBytes);
System.out.println("解密后的密码:" + decryptedPwdStr);
```
需要注意的是,上面示例中的公钥字符串和加密后的密码字符串都是经过格式化的,需要将其转换为byte数组时先将其去除空格和换行符。另外,解密后的密码是byte数组形式的,需要根据实际情况进行转换。
阅读全文