Open musicguoke opened 1 year ago
非常感谢,搞了半天看到您的方案终于解决了。👍
关于 hexStr 可以简化成以下的方法调用:
String hexStr = HexUtil.encodeHexStr(sm2.getQ(false));
后端解密的时候还是用的原始私钥进行解密吗?按照上面的方法,后端目前一直解码出错
后端解密的时候还是用的原始私钥进行解密吗?按照上面的方法,后端目前一直解码出错
SM2 sm2 = SmUtil.sm2(privateKey, null);
String requestBody = sm2.decryptStr("04" + requestBody, KeyType.PrivateKey);
可以用生成的Base64编码的私钥构造sm2对象来解密,需要在密文前加上04前缀
问题的原因
通常由于网上找的js端提供的 SM2代码实现的方案, 都是直接使用的私钥的d值和公钥的q值直接进行的加解密 所以后端口返回的最好是从公钥里面提取的q值,以q值做为js端的加密公钥
前端使用publicKey加密步骤