node-rsa于前端 jsencrypt 加密解密问题
发布于 10 个月前 作者 blackjack 3594 次浏览 来自 分享

最初使用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);

4 回复

RSA加密放前端?? 这样真的好么?? 不怕泄露 pubkey导致的xss

@richenlin 这个是放到后端的,privatekey和publickey都是放到后端的,前端需要用到的时候取把publickey取来就行了,我这个就是一个加解密的demo,不是项目代码

@blackjack@richenlin 这里的publickey 都是放到后端的话,每次请求的时候在发给客户端publickey,在网络上面不是也可以截获到publickey吗?. 这不是都会泄露 pubkey吗? 放到前端再使用压缩代码的话.不是很安全吗? 小白请轻喷!!

公钥本来就是给用户加密用的吧,至于xss攻击者不是一个公钥就能导致的

回到顶部