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


Posted in NodeJs onOctober 12, 2018

要用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

参考

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加密解密用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

NodeJs 相关文章推荐
nodejs中转换URL字符串与查询字符串详解
Nov 26 NodeJs
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
Jan 01 NodeJs
NodeJS实现客户端js加密
Jan 09 NodeJs
NodeJS遍历文件生产文件列表功能示例
Jan 22 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs实现大文件(在线视频)的读取
Oct 16 NodeJs
Nodejs下使用gm圆形裁剪并合成图片的示例
Feb 22 NodeJs
深入理解nodejs搭建静态服务器(实现命令行)
Feb 05 NodeJs
详解NodeJS模块化
Jun 15 NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 #NodeJs
nodejs实现范围请求的实现代码
Oct 12 #NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 #NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 #NodeJs
nodejs aes 加解密实例
Oct 10 #NodeJs
nodejs读取本地中文json文件出现乱码解决方法
Oct 10 #NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 #NodeJs
You might like
PHP 源代码压缩小工具
2009/12/22 PHP
利用PHP脚本在Linux下用md5函数加密字符串的方法
2015/06/29 PHP
PHP/HTML混写的四种方式总结
2017/02/27 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
2012/02/10 Javascript
JS左右无缝滚动(一般方法+面向对象方法)
2012/08/17 Javascript
鼠标左键单击冲突的问题解决方法(防止冒泡)
2014/05/14 Javascript
jquery datatable后台封装数据示例代码
2014/08/07 Javascript
jQuery实现长按按钮触发事件的方法
2015/02/02 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
深入理解jQuery中的事件冒泡
2016/05/24 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
Javascript中prototype的使用详解
2016/06/18 Javascript
微信小程序多音频播放进度条问题
2018/08/28 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
vue中使用微信公众号js-sdk踩坑记录
2019/03/29 Javascript
微信小程序 this.triggerEvent()的具体使用
2019/12/10 Javascript
[02:41]DOTA2英雄基础教程 冥魂大帝
2014/01/16 DOTA
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
python登录QQ邮箱发信的实现代码
2013/02/10 Python
Python动态赋值的陷阱知识点总结
2019/03/17 Python
Python 获取指定文件夹下的目录和文件的实现
2019/08/30 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
Python使用pyexecjs代码案例解析
2020/07/13 Python
瑞典领先的汽车零部件网上零售商:bildelaronline24.se
2017/01/12 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
中班幼儿评语大全
2014/04/30 职场文书
学校教研活动总结
2014/07/02 职场文书
关于保护环境的建议书
2019/06/24 职场文书
python爬不同图片分别保存在不同文件夹中的实现
2021/04/02 Python
Python中的 Set 与 dict
2022/03/13 Python
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python