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写的一个简单项目打包工具
May 11 NodeJs
nodejs 实现模拟form表单上传文件
Jul 14 NodeJs
nodejs学习笔记之路由
Mar 27 NodeJs
nodejs个人博客开发第一步 准备工作
Apr 12 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
nodejs Assert中equal(),strictEqual(),deepEqual(),strictDeepEqual()比较
Sep 18 NodeJs
详解NODEJS的http实现
Jan 04 NodeJs
nodejs读取并去重excel文件
Apr 22 NodeJs
M2实现Nodejs项目自动部署的方法步骤
May 05 NodeJs
Nodejs libuv运行原理详解
Aug 21 NodeJs
windows如何把已安装的nodejs高版本降级为低版本(图文教程)
Dec 14 NodeJs
Nodejs 数组的队列以及forEach的应用详解
Feb 25 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+.htaccess实现全站静态HTML文件GZIP压缩传输(一)
2007/02/15 PHP
浅谈thinkphp5 instance 的简单实现
2017/07/30 PHP
Yii2框架自定义类统一处理url操作示例
2019/05/25 PHP
js动态给table添加/删除tr的方法
2013/08/02 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
js调用css属性写法
2013/09/21 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
js分页代码分享
2014/04/28 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
js密码强度检测
2016/01/07 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
红黑树的插入详解及Javascript实现方法示例
2018/03/26 Javascript
ES6 系列之 WeakMap的使用示例
2018/08/06 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
[02:44]完美大师赛主赛事淘汰赛第二日观众采访
2017/11/24 DOTA
Python中replace方法实例分析
2014/08/20 Python
在Python的web框架中配置app的教程
2015/04/30 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
keras导入weights方式
2020/06/12 Python
Android面试题及答案
2015/09/04 面试题
策划助理岗位职责
2013/11/18 职场文书
给校长的建议书
2014/03/12 职场文书
创意婚礼策划方案
2014/05/18 职场文书
企业环保标语
2014/06/10 职场文书
2015大学生求职信范文
2015/03/20 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
闪闪红星观后感
2015/06/08 职场文书
《秋思》教学反思
2016/02/23 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
详解Python中下划线的5种含义
2021/07/15 Python
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis