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 sublime text 3安装与配置
Jun 19 NodeJs
基于NodeJS的前后端分离的思考与实践(三)轻量级的接口配置建模框架
Sep 26 NodeJs
Nodejs学习笔记之NET模块
Jan 13 NodeJs
nodejs搭建本地服务器并访问文件的方法
Mar 03 NodeJs
nodejs multer实现文件上传与下载
May 10 NodeJs
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
May 15 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 NodeJs
nodejs使用node-xlsx生成excel的方法示例
Aug 22 NodeJs
nodeJs的安装与npm全局环境变量的配置详解
Jan 06 NodeJs
如何利用nodejs实现命令行游戏
Nov 24 NodeJs
nodeJs项目在阿里云的简单部署
Nov 27 NodeJs
Nodejs实现微信分账的示例代码
Jan 19 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
浅谈json_encode用法
2015/03/05 PHP
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
浅析js设置控件的readonly与enabled属性问题
2013/12/25 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
Node.js开启Https的实践详解
2016/10/25 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
2017/02/23 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
vue使用 better-scroll的参数和方法详解
2018/01/25 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
js实现计时器秒表功能
2019/12/16 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
python中日期和时间格式化输出的方法小结
2015/03/19 Python
Python基于sftp及rsa密匙实现远程拷贝文件的方法
2016/09/21 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
容易被忽略的Python内置类型
2020/09/03 Python
python中使用.py配置文件的方法详解
2020/11/23 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
HTML5新特性之type=file文件上传功能
2018/02/02 HTML / CSS
英国领先的男士美容护发用品公司:Mankind
2016/08/31 全球购物
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
英国领先的运动物理治疗供应公司:Vivomed
2018/07/14 全球购物
意大利时尚精品店:Nugnes 1920
2020/02/10 全球购物
大学系主任推荐信范文
2013/12/24 职场文书
工作疏忽检讨书
2014/01/25 职场文书
精彩广告词大全
2014/03/19 职场文书
应聘会计求职信
2014/06/11 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
2014年质检工作总结
2014/11/26 职场文书