最初使用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);
RSA加密放前端?? 这样真的好么?? 不怕泄露 pubkey导致的xss
@richenlin 这个是放到后端的,privatekey和publickey都是放到后端的,前端需要用到的时候取把publickey取来就行了,我这个就是一个加解密的demo,不是项目代码
@blackjack@richenlin 这里的publickey 都是放到后端的话,每次请求的时候在发给客户端publickey,在网络上面不是也可以截获到publickey吗?. 这不是都会泄露 pubkey吗? 放到前端再使用压缩代码的话.不是很安全吗? 小白请轻喷!!
公钥本来就是给用户加密用的吧,至于xss攻击者不是一个公钥就能导致的