js使用crypto实现md5WithRSA加密及验签
最近使用node对接一家支付三方,对方使用的是java
要求使用RSA加密 使用的算法是 md5WithRSA encoding是utf8 输出是base64
在使用crypto-js和node-rsa无果后 查阅了node官方文档的crypto找到了答案

createSign方法传入加密算法创建一个sign对象,当然算法不是全部都支持的

使用getHashes()方法可以查到能使用的算法 正好 我们需要的md5WithRSA 在其中 (在这是md5WithRSAEncryption)
加密
try {
let priKeyName = 'pri.pem';
let priKey = fs.readFileSync(path.resolve(__dirname, path.join(SELF_ROOT_PATH, 'keys/' + priKeyName))).toString();
let sign = crypto.createSign('md5WithRSAEncryption');
sign.update(signString, 'utf8');
sign.end();
let signature = sign.sign(priKey, 'base64');
} catch (err) {
console.log('RSA加密 -------------------------');
console.log(err);
}
验签
try {
let pubKeyName = 'pri.pem';
let pubKey = fs.readFileSync(path.resolve(__dirname, path.join(think.ROOT_PATH, 'keys/' + pubKeyName))).toString();
let verify = crypto.createVerify('md5WithRSAEncryption');
verify.update(signString, 'utf8');
verify.end();
let res = verify.verify(pubKey, signature, 'base64');
console.log(res)
} catch (err) {
console.log('RSA加密 -------------------------');
console.log(err);
}

浙公网安备 33010602011771号