最近做个网站,数据传输需要加密,github上翻了好久找到了node-rsa,下面是使用过程。其他详细配置请移步作者github仓库。
下载,引入。
http://web.chacuo.net/netrsakeypair 去里面生成一对密钥。存起来。
客户端使用私钥加密传输数据。
let NodeRSA = require('node-rsa'); //引入包
var key = new NodeRSA('-----BEGIN PRIVATE KEY-----\n'+
'MIIBUwIBAD*****我的密钥中间内容在此省略******************************4T3ixIYmXV\n'+
'lE2w4ToVD*****我的密钥中间内容在此省略******************************CPWT\n'+
'4mRIKQI*****我的密钥中间内容在此省略******************************QVNewK\n'+
'aKdlPL*****我的密钥中间内容在此省略******************************tE5e5UG+Byh\n'+
'kaEcKrn*****我的密钥中间内容在此省略******************************oY\n'+
'mQIgMqI*****我的密钥中间内容在此省略******************************bamOJKFn\n'+
'bb6oNlScHk*****我的密钥中间内容在此省略******************************91+xgpo2d\n'+
'afyOciqf/g==\n'+
'-----END PRIVATE KEY-----'
);//利用私钥创建NodeRSA对象。
let encryptPassword = key.encryptPrivate("要加密的字符串",'base64'); //用base64,因为解密只支持base64和buffer
encryptPassword= encryptPassword.replace(/\+/g,"~"); //base64里面有 + / = 不利于ajax数据传输,替换掉
encryptPassword= encryptPassword.replace(/\//g,',');
encryptPassword = encryptPassword.replace(/=/g,'$');
ajax数据传输到服务端
var NodeRSA = require('node-rsa');
var key = new NodeRSA('-----BEGIN PUBLIC KEY-----\n'+
'MFwwDQ*****我的密钥中间内容在此省略******************************E6FQyA+lbm\n'+
'ezL2drqQvU********我的密钥中间内容在此省略******************SCkCAwEAAQ==\n'+
'-----END PUBLIC KEY-----'
);//用公钥创建NodeRSA对象。
pw = pw.replace(/~/g,"+"); //pw是传输的加密数据,先吧客户端传递过来的数据还原
pw = pw.replace(/,/g,"/");
pw = pw.replace(/$/g,"=");
var decryptedPassword = key.decryptPublic(pw,'utf8'); // 解密成utf-8格式,完成。