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使用jQuery选择器操作DOM
Feb 13 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
nodejs入门教程四:URL相关模块用法分析
Apr 24 NodeJs
NodeJs模拟登陆正方教务
Apr 28 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
基于nodejs的微信JS-SDK简单应用实现
May 21 NodeJs
监控Nodejs的性能实例代码
Jul 02 NodeJs
Nodejs封装类似express框架的路由实例详解
Jan 05 NodeJs
一文秒懂nodejs中的异步编程
Jan 28 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 下载保存文件保存到本地的两种实现方法
2013/08/12 PHP
PHP5.3新特性小结
2016/02/14 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
由JavaScript技术实现的web小游戏(不含网游)
2010/06/12 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
javascript中setInterval的用法
2015/07/19 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
javascript容错处理代码(屏蔽js错误)
2017/01/20 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
关于在vue-cli中使用微信自动登录和分享的实例
2017/06/22 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
原生JS+CSS实现炫酷重力模拟弹跳系统的登录页面
2017/11/01 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
vue 集成jTopo 处理方法
2019/08/07 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
JS实现滑动插件
2020/01/15 Javascript
用JS实现选项卡
2020/03/23 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
js实现鼠标切换图片(无定时器)
2021/01/27 Javascript
Python  pip安装lxml出错的问题解决办法
2017/02/10 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
详解Python的循环结构知识点
2019/05/20 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
python实现提取str字符串/json中多级目录下的某个值
2020/02/27 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
加拿大在线隐形眼镜和眼镜店:VisionPros
2019/10/06 全球购物
社会实践的活动方案
2014/08/22 职场文书
2014年党员教师自我剖析材料
2014/09/30 职场文书
党的群众路线教育实践活动先进个人材料
2014/12/24 职场文书
小学生纪律委员竞选稿
2015/11/19 职场文书