NodeJS加密解密,node-rsa加密解密用法
要用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
終端裡會輸出一串類似fH1aVCUceJYVvt1tZ7WYc1Dh5dVCd952GY5CX283V/wK2229FLgT9WfRNAPMjbTtwL9ghVeYD4Lsi6yM1t4OqA==
的base64字串,這就是用私鑰加密後的密文了
解密
把上一步加密獲得的密文複製貼上到下面要解密的方法內
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();
執行node index.js
會發現又拿到hello world
了
參考
- ofollow,noindex" target="_blank">https://github.com/rzcoder/node-rsa
原文連結: