91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

NodeJS加密解密及node-rsa加密解密用法詳解

發布時間:2020-09-04 14:05:25 來源:腳本之家 閱讀:463 作者:mrr 欄目:web開發

要用nodejs開發接口,實現遠程調用,如果裸奔太危險了,就在網上找了一下nodejs的加密,感覺node-rsa挺不錯的,下面來總結一下簡單的rsa加密解密用法

初始化環境

新建一個文件夾 node-rsa-demo , 終端進入,運行下面命令初始化

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 用來存放密鑰的,然后執行 node index.js ,會發現在 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();

然后執行 node index.js 終端里會輸出一串類似

fH1aVCUceJYVvt1tZ7WYc1Dh6dVCd952GY5CX283V/wK2229FLgT9WfRNAPMjbTtwL9ghVeYD4Lsi6yM1t4OqA== 的base64字符串,這就是用私鑰加密后的密文了

解密

把上一步加密獲得的密文復制粘貼到下面要解密的方法內

function decrypt() {
 fs.readFile('./pem/public.pem', function (err, data) {
 var key = new NodeRSA(data);
 let rawText = key.decryptPublic('fH1aVCUceJYVvt1tZ7WYc1Dh6dVCd952GY5CX283V/wK2229FLgT9WfRNAPMjbTtwL9ghVeYD4Lsi6yM1t4OqA==', 'utf8');
 console.log(rawText);
 });
}
//generator();
//encrypt();
decrypt();

執行 node index.js 會發現又拿到 hello world

參考

https://github.com/rzcoder/node-rsa

PS:下面通過一段代碼看下nodejs加密解密

nodejs是通集成在內核中的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
};

此處,只針對可逆加密。

總結

以上所述是小編給大家介紹的NodeJS加密解密及node-rsa加密解密用法詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台湾省| 日喀则市| 湘乡市| 田林县| 庆元县| 长春市| 绥江县| 牟定县| 广德县| 黑龙江省| 夏津县| 淄博市| 临汾市| 吉水县| 临泉县| 石嘴山市| 鄂尔多斯市| 林芝县| 明溪县| 绥棱县| 孝感市| 衡阳县| 泸水县| 塔城市| 太原市| 安义县| 全南县| 墨脱县| 西盟| 西丰县| 开平市| 平乐县| 汶川县| 南华县| 内乡县| 资溪县| 襄垣县| 聂拉木县| 安顺市| 新昌县| 轮台县|