国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 15:28:49
字體:
供稿:網(wǎng)友

要用nodejs開發(fā)接口,實現(xiàn)遠程調(diào)用,如果裸奔太危險了,就在網(wǎng)上找了一下nodejs的加密,感覺node-rsa挺不錯的,下面來總結(jié)一下簡單的rsa加密解密用法

初始化環(huán)境

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

cd node-rsa-demonpm 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};            
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 黎平县| 孟州市| 四川省| 安康市| 台南县| 山东省| 咸丰县| 阜康市| 清原| 客服| 伊宁县| 中牟县| 同德县| 潮安县| 枣强县| 嘉鱼县| 闵行区| 荔浦县| 晋州市| 珲春市| 彩票| 涡阳县| 南部县| 章丘市| 三台县| 房产| 康马县| 新和县| 凤山县| 木兰县| 桦甸市| 翁牛特旗| 岑溪市| 郓城县| 东乡族自治县| 黎城县| 彭州市| 彭州市| 应城市| 湖口县| 内黄县|