最初使用jsencrypt 前端加密后的字符串后端解密不对 原因是 jsencrypt使用的是pkcs1,node-rsa使用的是KCS1_OAEP
所以端需要做private_key.setOptions({encryptionScheme: 'pkcs1'});
代码 var Rsa = require('node-rsa'); var fs = require('fs'); var privatePem = fs.readFileSync('./rsa_private_key.pem').toString(); var publicPem = fs.readFileSync('./rsa_public_key.pem').toString();
var text = 'qqqqqq';
var public_key = new Rsa(publicPem);
var private_key = new Rsa(privatePem);
public_key.setOptions({encryptionScheme: 'pkcs1'});
private_key.setOptions({encryptionScheme: 'pkcs1'});
console.log('text:', text);
//var encrypted = public_key.encrypt(text, 'base64');
//console.log('encrypted: ', encrypted);
var encrypted = 'iTGJGi3YWjPqrlTASjA+dB7oRwSYO50nToxkuSe+7dzZ6eC2uQE0tGk2TV+ouj9FDwdUmc/5yMBKP4Bvyan0+08yGlnl6yQMwvlQ0CagTwdzxdstMjfAReLC4JANcodW/+zB6H3K64WpLCRuQB0m0Ss1IxygM3I2Ut27gnlFhjY=';
var decrypted = private_key.decrypt(encrypted, 'utf8');
console.log('decrypted: ', decrypted);