JuneAndGreen / sm-crypto

国密算法js版
MIT License
894 stars 245 forks source link

Sm2使用hutool工具进行加解密的解决方案 #72

Open musicguoke opened 1 year ago

musicguoke commented 1 year ago

问题的原因

通常由于网上找的js端提供的 SM2代码实现的方案, 都是直接使用的私钥的d值和公钥的q值直接进行的加解密 所以后端口返回的最好是从公钥里面提取的q值,以q值做为js端的加密公钥

前端使用publicKey加密步骤

GunhouWong commented 1 year ago

非常感谢,搞了半天看到您的方案终于解决了。👍

关于 hexStr 可以简化成以下的方法调用:

String hexStr = HexUtil.encodeHexStr(sm2.getQ(false));

longshihui commented 1 year ago

后端解密的时候还是用的原始私钥进行解密吗?按照上面的方法,后端目前一直解码出错

Tyler-Rabbit commented 10 months ago

后端解密的时候还是用的原始私钥进行解密吗?按照上面的方法,后端目前一直解码出错

SM2 sm2 = SmUtil.sm2(privateKey, null); String requestBody = sm2.decryptStr("04" + requestBody, KeyType.PrivateKey); 可以用生成的Base64编码的私钥构造sm2对象来解密,需要在密文前加上04前缀