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教程 安装express及配置app.js文件的详细步骤
May 11 NodeJs
nodejs入门教程三:调用内部和外部方法示例
Apr 24 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
nodejs初始化init的示例代码
Oct 10 NodeJs
nodejs require js文件入口,在package.json中指定默认入口main方法
Oct 10 NodeJs
nodejs实现日志读取、日志查找及日志刷新的方法分析
May 20 NodeJs
纯异步nodejs文件夹(目录)复制功能
Sep 03 NodeJs
NodeJS开发人员常见五个错误理解
Oct 14 NodeJs
Nodejs在局域网配置https访问的实现方法
Oct 17 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 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
php 8小时时间差的解决方法小结
2009/12/22 PHP
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
PHP批量去除BOM头内容信息代码
2016/03/11 PHP
thinkPHP交易详情查询功能详解
2016/12/02 PHP
Yii框架学习笔记之session与cookie简单操作示例
2019/04/30 PHP
clientX,pageX,offsetX,x,layerX,screenX,offsetLeft区别分析
2010/03/12 Javascript
ajax不执行success回调而是执行了error回调
2012/12/10 Javascript
父节点获取子节点的字符串示例代码
2014/02/26 Javascript
浅谈JavaScript的全局变量与局部变量
2016/06/10 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
canvas绘制表盘时钟
2017/01/23 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
2017/05/26 Javascript
jQuery简介_动力节点Java学院整理
2017/07/04 jQuery
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
JS中双击和单击事件冲突的解决方法
2018/04/09 Javascript
Vue-router 中hash模式和history模式的区别
2018/07/24 Javascript
Vue的watch和computed方法的使用及区别介绍
2018/09/06 Javascript
详解基于electron制作一个node压缩图片的桌面应用
2019/01/29 Javascript
ES6知识点整理之函数数组参数的默认值及其解构应用示例
2019/04/17 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
jQuery操作元素的内容和样式完整实例分析
2020/01/10 jQuery
[02:53]2018年度DOTA2最佳战队-完美盛典
2018/12/17 DOTA
用Python和MD5实现网站挂马检测程序
2014/03/13 Python
浅谈终端直接执行py文件,不需要python命令
2017/01/23 Python
JSONLINT:python的json数据验证库实例解析
2017/11/28 Python
python list是否包含另一个list所有元素的实例
2018/05/04 Python
基于matplotlib xticks用法详解
2020/04/16 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
珍爱生命演讲稿
2014/05/10 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
低碳生活的宣传标语
2014/06/23 职场文书
好的旅游活动方案
2014/08/19 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书