业务逻辑需要使用 NodeJS 进行公钥加密传输给 Java 后端进行私钥解密,但是默认 NodeJS 使用的 RSA padding 模式与 Java 的不一致,所以需要配置。
不啰嗦,上代码,分别用 crypto和 node-rsa进行了加解密实验!
const crypto = require('crypto');
const NodeRSA = require('node-rsa');
let inputString = '我是明文字符串!';
let publicKeyStr = '-----BEGIN PUBLIC KEY-----\n' +
'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCe8g647gv...\n' +
'-----END PUBLIC KEY-----';
let privateKeyStr = '-----BEGIN PRIVATE KEY-----\n' +
'MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGB...\n' +
'-----END PRIVATE KEY-----';
let key = new NodeRSA(publicKeyStr);
key.setOptions({encryptionScheme: 'pkcs1'});
let encryptStr = key.encrypt(inputString, 'base64');
console.log(encryptStr)