NodeJS加密解密及node-rsa加密解密用法詳解
要用nodejs開發(fā)接口,實(shí)現(xiàn)遠(yuǎn)程調(diào)用,如果裸奔太危險了,就在網(wǎng)上找了一下nodejs的加密,感覺node-rsa挺不錯的,下面來總結(jié)一下簡單的rsa加密解密用法
初始化環(huán)境
新建一個文件夾 node-rsa-demo , 終端進(jìn)入,運(yùn)行下面命令初始化
cd node-rsa-demo npm init # 一路回車即可 npm install --save node-rsa
生成公鑰私鑰
在 node-rsa-demo 下新建一個文件 index.js 寫上如下代碼
var NodeRSA = require('node-rsa')
var fs = require('fs')
function generator() {
var key = new NodeRSA({ b: 512 })
key.setOptions({ encryptionScheme: 'pkcs1' })
var privatePem = key.exportKey('pkcs1-private-pem')
var publicPem = key.exportKey('pkcs1-public-pem')
fs.writeFile('./pem/public.pem', publicPem, (err) => {
if (err) throw err
console.log('公鑰已保存!')
})
fs.writeFile('./pem/private.pem', privatePem, (err) => {
if (err) throw err
console.log('私鑰已保存!')
})
}
generator();
先在 node-rsa-demo 文件夾下新建一個文件夾 pem 用來存放密鑰的,然后執(zhí)行 node index.js ,會發(fā)現(xiàn)在 pem 文件夾下生成了兩個文件
- private.pem
- public.pem
加密
加密 hello world 這個字符串
function encrypt() {
fs.readFile('./pem/private.pem', function (err, data) {
var key = new NodeRSA(data);
let cipherText = key.encryptPrivate('hello world', 'base64');
console.log(cipherText);
});
}
//generator();
encrypt();
然后執(zhí)行 node index.js 終端里會輸出一串類似
fH1aVCUceJYVvt1tZ7WYc1Dh5dVCd952GY5CX283V/wK2229FLgT9WfRNAPMjbTtwL9ghVeYD4Lsi6yM1t4OqA== 的base64字符串,這就是用私鑰加密后的密文了
解密
把上一步加密獲得的密文復(fù)制粘貼到下面要解密的方法內(nèi)
function decrypt() {
fs.readFile('./pem/public.pem', function (err, data) {
var key = new NodeRSA(data);
let rawText = key.decryptPublic('fH1aVCUceJYVvt1tZ7WYc1Dh5dVCd952GY5CX283V/wK2229FLgT9WfRNAPMjbTtwL9ghVeYD4Lsi6yM1t4OqA==', 'utf8');
console.log(rawText);
});
}
//generator();
//encrypt();
decrypt();
執(zhí)行 node index.js 會發(fā)現(xiàn)又拿到 hello world 了
參考
https://github.com/rzcoder/node-rsa
PS:下面通過一段代碼看下nodejs加密解密
nodejs是通集成在內(nèi)核中的crypto模塊來完成加密解密。
常用加密解密模塊化代碼:
/**
* Created by linli on 2015/8/25.
*/
var crypto = require('crypto');
//加密
exports.cipher = function(algorithm, key, buf) {
var encrypted = "";
var cip = crypto.createCipher(algorithm, key);
encrypted += cip.update(buf, 'binary', 'hex');
encrypted += cip.final('hex');
return encrypted
};
//解密
exports.decipher = function(algorithm, key, encrypted) {
var decrypted = "";
var decipher = crypto.createDecipher(algorithm, key);
decrypted += decipher.update(encrypted, 'hex', 'binary');
decrypted += decipher.final('binary');
return decrypted
};
此處,只針對可逆加密。
總結(jié)
以上所述是小編給大家介紹的NodeJS加密解密及node-rsa加密解密用法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
visual studio配置node.js開發(fā)的圖文教程
在進(jìn)行node開發(fā)時,使用visual studio作為開發(fā)工具是非常常見的選擇,本文主要介紹了visual studio配置node.js開發(fā)的圖文教程,具有一定的參考價值,感興趣的可以了解一下2024-05-05
node.js正則表達(dá)式獲取網(wǎng)頁中所有鏈接的代碼實(shí)例
這篇文章主要介紹了node.js正則表達(dá)式獲取網(wǎng)頁中所有鏈接的代碼實(shí)例,使用正則表達(dá)式實(shí)現(xiàn),需要的朋友可以參考下2014-06-06
詳解通過源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn)
這篇文章主要介紹了詳解通過源碼解析Node.js中cluster模塊的主要功能實(shí)現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
node+koa2+mysql+bootstrap搭建一個前端論壇
本篇文章通過實(shí)例給大家分享了用node+koa2+mysql+bootstrap搭建一個前端論壇的步驟,有需要的朋友參考下。2018-05-05
node.js +mongdb實(shí)現(xiàn)登錄功能
這篇文章主要介紹了node.js +mongdb實(shí)現(xiàn)登錄功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06

