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验证(url-valid)的使用方法
Nov 18 NodeJs
我的NodeJs学习小结(一)
Jul 06 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
nodejs URL模块操作URL相关方法介绍
Mar 03 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
浅析 NodeJs 的几种文件路径
Jun 07 NodeJs
详解nodejs的express如何自动生成项目框架
Jul 12 NodeJs
nodejs构建本地web测试服务器 如何解决访问静态资源问题
Jul 14 NodeJs
nodejs async异步常用函数总结(推荐)
Nov 17 NodeJs
基于nodejs实现微信支付功能
Dec 20 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/09/05 PHP
PHP脚本的10个技巧(3)
2006/10/09 PHP
destoon在各个服务器下设置URL Rewrite(伪静态)的方法
2014/06/21 Servers
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
我整理的PHP 7.0主要新特性
2016/01/07 PHP
PHP中SERIALIZE和JSON的序列化与反序列化操作区别分析
2016/10/11 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
2020/01/26 PHP
asp批量修改记录的代码
2008/06/25 Javascript
JS完整获取IE浏览器信息包括类型、版本、语言等等
2014/05/22 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
javascript日期计算实例分析
2015/06/29 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
JavaScript实现带播放列表的音乐播放器实例分享
2016/03/07 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
微信小程序教程系列之新建页面(4)
2017/04/17 Javascript
JS实现简单的浮动碰撞效果示例
2017/12/28 Javascript
微信小程序后端实现授权登录
2020/02/24 Javascript
python 文件和路径操作函数小结
2009/11/23 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
2019/08/04 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
Python退出时强制运行一段代码的实现方法
2020/04/29 Python
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
英国顶尖手表珠宝品牌独家授权经销商:HS Johnson
2020/10/28 全球购物
仓管岗位职责范本
2014/02/08 职场文书
学生周末回家住宿长期请假条
2014/02/15 职场文书
家庭教育的心得体会
2014/09/01 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
2014司机年终工作总结
2014/12/05 职场文书
简历自我评价模板
2015/03/11 职场文书
交通安全宣传标语(100条)
2019/08/22 职场文书
python字典进行运算原理及实例分享
2021/08/02 Python
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android