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使用jQuery选择器操作DOM
Feb 13 NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 NodeJs
基于Nodejs利用socket.io实现多人聊天室
Feb 22 NodeJs
详解nodeJS之路径PATH模块
May 31 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
nodejs操作mongodb的填删改查模块的制作及引入实例
Jan 02 NodeJs
nodejs中密码加密处理操作详解
Mar 20 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
Jul 30 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
详解nodejs 开发企业微信第三方应用入门教程
Mar 12 NodeJs
详解Nodejs get获取远程服务器接口数据
Mar 26 NodeJs
NodeJs使用webpack打包项目的方法详解
Feb 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 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
使用PHP和HTML5 FormData实现无刷新文件上传教程
2014/09/06 PHP
php实现异步将远程链接上内容(图片或内容)写到本地的方法
2016/11/30 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
2019/08/05 PHP
基于laravel belongsTo使用详解
2019/10/18 PHP
laravel 实现上传图片到本地和前台访问示例
2019/10/21 PHP
Dom 学习总结以及实例的使用介绍
2013/04/24 Javascript
javascript函数定义的几种区别小结
2014/01/06 Javascript
JS实现根据出生年月计算年龄
2014/01/10 Javascript
js判断60秒以及倒计时示例代码
2014/01/24 Javascript
jQuery前端开发35个小技巧
2016/05/24 Javascript
AngularJS 依赖注入详解和简单实例
2016/07/28 Javascript
基于JSON格式数据的简单jQuery幻灯片插件(jquery-slider)
2016/08/10 Javascript
jQuery validate插件功能与用法详解
2016/12/15 Javascript
轻松理解JavaScript之AJAX
2017/03/15 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
vue实现商城上货组件简易版
2017/11/27 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
jQuery实现基本动画效果的方法详解
2018/09/06 jQuery
浅谈Vue.js组件(二)
2019/04/09 Javascript
学习python (1)
2006/10/31 Python
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
python中sleep函数用法实例分析
2015/04/29 Python
解读Django框架中的低层次缓存API
2015/07/24 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
python调用私有属性的方法总结
2020/07/24 Python
巴西最大的运动品牌:Olympikus
2020/07/14 全球购物
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
Boolean b = new Boolean(“abcde”); 会编译错误码
2013/11/27 面试题
党的群众路线教育实践方案
2014/05/11 职场文书
代领毕业证委托书
2014/08/02 职场文书
创先争优个人总结
2015/03/04 职场文书
2015年勤工助学工作总结
2015/04/29 职场文书
公司宣传语大全
2015/07/13 职场文书
go原生库的中bytes.Buffer用法
2021/04/25 Golang