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基于mongoose模块的增删改查的操作
Dec 21 NodeJs
nodejs 实现钉钉ISV接入的加密解密方法
Jan 16 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
Mac 安装 nodejs方法(图文详细步骤)
Oct 30 NodeJs
nodejs中art-template模板语法的引入及冲突解决方案
Nov 07 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 NodeJs
Nodejs 识别图片类型的方法
Aug 15 NodeJs
Nodejs中使用puppeteer控制浏览器中视频播放功能
Aug 26 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 数学运算验证码实现代码
2009/10/11 PHP
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
php中的比较运算符详解
2013/10/28 PHP
为你总结一些php系统类函数
2015/10/21 PHP
php正则表达式学习笔记
2015/11/13 PHP
php从数据库中读取特定的行(实例)
2017/06/02 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
javascript 获取模态窗口的滚动位置代码
2013/08/06 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
Extjs4中tree的拖拽功能(可以两棵树之间拖拽) 简单实例
2013/12/08 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
Javascript学习笔记之函数篇(六) : 作用域与命名空间
2014/11/23 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
jquery ztree实现模糊搜索功能
2016/02/25 Javascript
详解Bootstrap插件
2016/04/25 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
纯js实现html转pdf的简单实例(推荐)
2017/02/16 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
JS实现模糊查询带下拉匹配效果
2018/06/21 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
python分析apache访问日志脚本分享
2015/02/26 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
python数值基础知识浅析
2019/11/19 Python
Python 函数绘图及函数图像微分与积分
2019/11/20 Python
html5通过canvas实现刮刮卡效果示例分享
2014/01/27 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
丝芙兰中国官方商城:SEPHORA中国
2018/01/10 全球购物
面料业务员岗位职责
2013/12/26 职场文书
机电一体化应届生求职信范文
2014/01/24 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
经典商业广告词
2014/03/13 职场文书
医学检验专业自荐信
2014/09/18 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
乡镇科协工作总结2015
2015/05/19 职场文书
Node实现搜索框进行模糊查询
2021/06/28 Javascript