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的前后端分离的思考与实践(四)安全问题解决方案
Sep 26 NodeJs
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
Aug 21 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
nodejs redis 发布订阅机制封装实现方法及实例代码
Dec 15 NodeJs
Nodejs多站点切换Htpps协议详解及简单实例
Feb 23 NodeJs
详解nodejs微信公众号开发——1.接入微信公众号
Apr 10 NodeJs
Nodejs中Express 常用中间件 body-parser 实现解析
May 22 NodeJs
nodejs简单实现TCP服务器端和客户端的聊天功能示例
Jan 04 NodeJs
基于nodejs res.end和res.send的区别
May 14 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
通过Nodejs搭建网站简单实现注册登录流程
Jun 14 NodeJs
在nodejs中创建child process的方法
Jan 26 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数据库开发知多少
2006/10/09 PHP
发款php蜘蛛统计插件只要有mysql就可用
2010/10/12 PHP
php文件上传的例子及参数详解
2013/12/12 PHP
PHP函数超时处理方法
2016/02/14 PHP
php将一维数组转换为每3个连续值组成的二维数组
2016/05/06 PHP
laravel 修改记住我功能的cookie保存时间的方法
2019/10/14 PHP
用javascript实现读取txt文档的脚本
2007/07/20 Javascript
取键盘键位ASCII码的网页
2007/07/30 Javascript
IE6弹出“已终止操作”的解决办法
2010/11/27 Javascript
qTip2 精致的基于jQuery提示信息插件
2012/02/17 Javascript
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
js获取dom的高度和宽度(可见区域及部分等等)
2013/06/13 Javascript
实例代码详解javascript实现窗口抖动及qq窗口抖动
2016/01/04 Javascript
Javascript中判断一个值是否为undefined的方法详解
2016/09/28 Javascript
vue-resource 拦截器使用详解
2017/02/21 Javascript
Nuxt.js SSR与权限验证的实现
2018/11/21 Javascript
基于webpack4+vue-cli3项目实现换肤功能
2019/07/17 Javascript
[01:14:34]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第一局
2016/02/28 DOTA
python使用urllib2提交http post请求的方法
2015/05/26 Python
python开发简易版在线音乐播放器
2017/03/03 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
Python简单读写Xls格式文档的方法示例
2018/08/17 Python
Python线程之定位与销毁的实现
2019/02/17 Python
利用Python检测URL状态
2019/07/31 Python
python 函数中的参数类型
2020/02/11 Python
python3.7调试的实例方法
2020/07/21 Python
Html5如何唤起百度地图App的方法
2019/01/27 HTML / CSS
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
服装行业创业计划书范文
2014/02/05 职场文书
环保志愿者活动方案
2014/08/14 职场文书
试用期员工工作自我评价
2014/09/10 职场文书
2014年后勤管理工作总结
2014/12/01 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
安阳殷墟导游词
2015/02/10 职场文书
python 逐步回归算法
2021/04/06 Python