详见资源包
https://download.csdn.net/download/x948130516/89119461?spm=1001.2014.3001.5503
前端引入依赖
使用hutool工具进行签名和验签时,前端需要传入第三个json对象参数,否则会验签失败
前端使用npm install --save sm-crypto引入依赖库
前端验签
/**
* msg 明文数据即解密后数据
* sigValueHex 后端传过来的签名(不需要进行任何处理)
* publicKeyQ 服务端公钥 Q
* 最后的json对象必传,否则验签失败
*/
sm2.doVerifySignature(msg, sigValueHex, publicKeyQ ,{der: true,hash: true,}) // 验签结果
const sm2 = require('sm-crypto').sm2
let signResult = sm2.doVerifySignature(
"Hello World", "304502207b8a07c36a97c34278bf4352af13f4a1022f79816820c52a1a23d7499e24a609022100dcf53edf3f2d7f648fea027cacce90f6d101923b1215b2cb9aa6811064ed6cdd",
publicKeyQ,
{ hash: true, der: true }
);
console.log("验签结果:", signResult);
前端签名
/**
* msg 明文数据
* privateKeyD 客户端私钥 D
* 最后的json对象必传,否则验签失败
*/
sm2.doSignature(msg, privateKeyD,{der: true,hash: true,}) // 签名
let sign = sm2.doSignature("Hello World",privateKeyD,{der:true,hash:true,}
);
console.log("签名:", sign);