最近做個網(wǎng)站慕淡,數(shù)據(jù)傳輸需要加密,github上翻了好久找到了node-rsa,下面是使用過程病附。其他詳細配置請移步作者github倉庫问窃。
下載,引入完沪。
http://web.chacuo.net/netrsakeypair 去里面生成一對密鑰泡躯。存起來。
客戶端使用私鑰加密傳輸數(shù)據(jù)丽焊。
let NodeRSA = require('node-rsa');? //引入包
var key = new NodeRSA('-----BEGIN PRIVATE KEY-----\n'+
'MIIBUwIBAD*****我的密鑰中間內(nèi)容在此省略******************************4T3ixIYmXV\n'+
'lE2w4ToVD*****我的密鑰中間內(nèi)容在此省略******************************CPWT\n'+
'4mRIKQI*****我的密鑰中間內(nèi)容在此省略******************************QVNewK\n'+
'aKdlPL*****我的密鑰中間內(nèi)容在此省略******************************tE5e5UG+Byh\n'+
'kaEcKrn*****我的密鑰中間內(nèi)容在此省略******************************oY\n'+
'mQIgMqI*****我的密鑰中間內(nèi)容在此省略******************************bamOJKFn\n'+
'bb6oNlScHk*****我的密鑰中間內(nèi)容在此省略******************************91+xgpo2d\n'+
'afyOciqf/g==\n'+
'-----END PRIVATE KEY-----'
);//利用私鑰創(chuàng)建NodeRSA對象较剃。
let encryptPassword = key.encryptPrivate("要加密的字符串",'base64');? //用base64,因為解密只支持base64和buffer
encryptPassword= encryptPassword.replace(/\+/g,"~"); //base64里面有 + / = 不利于ajax數(shù)據(jù)傳輸,替換掉
encryptPassword= encryptPassword.replace(/\//g,',');
encryptPassword = encryptPassword.replace(/=/g,'$');
?ajax數(shù)據(jù)傳輸?shù)椒?wù)端
var NodeRSA = require('node-rsa');
var key = new NodeRSA('-----BEGIN PUBLIC KEY-----\n'+
'MFwwDQ*****我的密鑰中間內(nèi)容在此省略******************************E6FQyA+lbm\n'+
'ezL2drqQvU********我的密鑰中間內(nèi)容在此省略******************SCkCAwEAAQ==\n'+
'-----END PUBLIC KEY-----'
);//用公鑰創(chuàng)建NodeRSA對象技健。
pw = pw.replace(/~/g,"+"); //pw是傳輸?shù)募用軘?shù)據(jù)写穴,先吧客戶端傳遞過來的數(shù)據(jù)還原
pw = pw.replace(/,/g,"/");
pw = pw.replace(/$/g,"=");
var decryptedPassword =? key.decryptPublic(pw,'utf8'); // 解密成utf-8格式,完成雌贱。