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学习笔记之入门篇
Apr 16 NodeJs
详解nodejs微信公众号开发——4.自动回复各种消息
Apr 11 NodeJs
详解如何在NodeJS项目中优雅的使用ES6
Apr 22 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
nodeJs爬虫的技术点总结
May 13 NodeJs
详解Nodejs mongoose
Jun 10 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
nodejs中函数的调用实例详解
Oct 31 NodeJs
Nodejs实现的操作MongoDB数据库功能完整示例
Feb 02 NodeJs
如何让Nodejs支持H5 History模式(connect-history-api-fallback源码分析)
May 30 NodeJs
nodejs读取图片返回给浏览器显示
Jul 25 NodeJs
NodeJS模块Buffer原理及使用方法解析
Nov 11 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二进制流 逐bit的低位在前算法(详解)
2013/06/13 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
微信公众平台开发教程②微信端分享功能图文详解
2019/04/10 PHP
javascript学习笔记(十九) 节点的操作实现代码
2012/06/20 Javascript
js调用后台、后台调用前台等方法总结
2014/04/17 Javascript
JavaScript sub方法入门实例(把字符串显示为下标)
2014/10/17 Javascript
封装好的js判断操作系统与浏览器代码分享
2015/01/09 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
JSON与js对象序列化实例详解
2017/03/16 Javascript
Jquery把获取到的input值转换成json
2017/05/15 jQuery
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
form表单数据封装成json格式并提交给服务器的实现方法
2017/12/14 Javascript
JS实现图片居中悬浮效果
2017/12/25 Javascript
vue使用v-for实现hover点击效果
2018/09/29 Javascript
Vue.js实现大转盘抽奖总结及实现思路
2019/10/09 Javascript
python获取当前日期和时间的方法
2015/04/30 Python
Python爬取网页中的图片(搜狗图片)详解
2017/03/23 Python
详解Python3注释知识点
2019/02/19 Python
Python Django基础二之URL路由系统
2019/07/18 Python
适合Python初学者的一些编程技巧
2020/02/12 Python
django restframework serializer 增加自定义字段操作
2020/07/15 Python
pytorch 中forward 的用法与解释说明
2021/02/26 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
大韩航空官方网站:Korean Air
2017/10/25 全球购物
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
为什么需要版本控制
2016/10/28 面试题
《威尼斯的小艇》教学反思
2014/02/17 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
新闻报道稿范文
2015/07/23 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python
深入浅出的讲解:信号调制到底是如何实现的
2022/02/18 无线电
详细聊一聊mysql的树形结构存储以及查询
2022/04/05 MySQL