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读取memcache示例分享
Jan 02 NodeJs
提高NodeJS中SSL服务的性能
Jul 15 NodeJs
Nodejs如何复制文件
Mar 09 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
nodejs中模块定义实例详解
Mar 18 NodeJs
nodejs+mongodb aggregate级联查询操作示例
Mar 17 NodeJs
nodejs 简单实现动态html的方法
May 12 NodeJs
通过nodejs 服务器读取HTML文件渲染到页面的方法
May 17 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs基础之buffer缓冲区用法分析
Dec 26 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
浅谈Node的内存泄露问题
May 06 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去除重复字的实现代码
2011/09/16 PHP
php中并发读写文件冲突的解决方案
2013/10/25 PHP
PHP独立Session数据库存储操作类分享
2014/06/11 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
汇总PHPmailer群发Gmail的常见问题
2016/02/24 PHP
php实现简单的权限管理的示例代码
2017/08/25 PHP
ThinkPHP整合datatables实现服务端分页的示例代码
2018/02/10 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
jquery $.ajax相关用法分享
2012/03/16 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
js中生成map对象的方法
2014/01/09 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
nodejs实现获取某宝商品分类
2015/05/28 NodeJs
JS快速实现移动端拼图游戏
2016/09/05 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
微信接入之获取用户头像的方法步骤
2019/09/23 Javascript
Python 实现购物商城,含有用户入口和商家入口的示例
2017/09/15 Python
详解Python学习之安装pandas
2019/04/16 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
python openCV实现摄像头获取人脸图片
2020/08/20 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
电脑教师的教学自我评价
2013/11/26 职场文书
护士见习期自我鉴定
2014/02/08 职场文书
董事长助理岗位职责
2014/02/18 职场文书
少年闰土教学反思
2014/02/22 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
运动员代表致辞
2015/07/29 职场文书
小学教师师德培训心得体会
2016/01/09 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP
golang DNS服务器的简单实现操作
2021/04/30 Golang
Springboot如何同时装配两个相同类型数据库
2021/11/17 Java/Android
Apache POI操作批量导入MySQL数据库
2022/06/21 Servers