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 后缀名判断限制代码
Mar 31 NodeJs
Nodejs实现的一个简单udp广播服务器、客户端
Sep 25 NodeJs
NodeJS中利用Promise来封装异步函数
Feb 25 NodeJs
nodeJS代码实现计算交社保是否合适
Mar 09 NodeJs
nodejs调用cmd命令实现复制目录
May 04 NodeJs
浅析Nodejs npm常用命令
Jun 14 NodeJs
进阶之初探nodeJS
Jan 24 NodeJs
nodejs根据ip数组在百度地图中进行定位
Mar 06 NodeJs
基于nodejs+express4.X实现文件下载的实例代码
Jul 13 NodeJs
详解IWinter 一个路由转控制器的 Nodejs 库
Nov 15 NodeJs
Nodejs处理异常操作示例
Dec 25 NodeJs
Nodejs实现用户注册功能
Apr 14 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
Zend Framework教程之Zend_Config_Ini用法分析
2016/03/23 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
yii gridview实现时间段筛选功能
2017/08/15 PHP
PHP7新特性
2021/03/09 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
告诉大家什么是JSON
2008/06/10 Javascript
JavaScript 未结束的字符串常量常见解决方法
2010/01/24 Javascript
JavaScript常用脚本汇总(二)
2015/03/04 Javascript
浅谈JavaScript中的作用域和闭包问题
2015/07/07 Javascript
javascript中的previousSibling和nextSibling的正确用法
2015/09/16 Javascript
jquery动态切换背景图片的简单实现方法
2016/05/14 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
AnglarJs中的上拉加载实现代码
2018/02/08 Javascript
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
jQuery插件simplePagination的使用方法示例
2020/04/28 jQuery
python网络编程学习笔记(五):socket的一些补充
2014/06/09 Python
Python实现对比不同字体中的同一字符的显示效果
2015/04/23 Python
python中子类继承父类的__init__方法实例
2016/12/15 Python
python实现栅栏加解密 支持密钥加密
2019/03/20 Python
搞清楚 Python traceback的具体使用方法
2019/05/13 Python
PyQt5 窗口切换与自定义对话框的实例
2019/06/20 Python
python使用requests.session模拟登录
2019/08/09 Python
Python封装成可带参数的EXE安装包实例
2019/08/24 Python
python 项目目录结构设置
2020/02/14 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
2020/02/26 Python
python剪切视频与合并视频的实现
2020/03/03 Python
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
俄罗斯最大的隐形眼镜销售网站:Ochkov.Net
2021/02/07 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
李开复演讲稿
2014/05/24 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
CSS 伪元素::marker详解
2021/06/26 HTML / CSS