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、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
使用nodejs中httpProxy代理时候出现404异常的解决方法
Aug 15 NodeJs
详解NodeJs支付宝移动支付签名及验签
Jan 06 NodeJs
简单实现nodejs上传功能
Jan 14 NodeJs
用nodejs搭建websocket服务器
Jan 23 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
nodejs爬虫遇到的乱码问题汇总
Apr 07 NodeJs
深入解析nodejs HTTP服务
Jul 25 NodeJs
nodejs对express中next函数的一些理解
Sep 08 NodeJs
Nodejs实现文件上传的示例代码
Sep 26 NodeJs
Nodejs实现WebSocket代码实例
May 19 NodeJs
nodeJS与MySQL实现分页数据以及倒序数据
Jun 05 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
几款免费开源的不用数据库的php的cms
2010/12/19 PHP
使用PHP访问RabbitMQ消息队列的方法示例
2018/06/06 PHP
centos7上编译安装php7以php-fpm方式连接apache
2018/11/08 PHP
php面试中关于面向对象的相关问题
2019/02/13 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
Jquery实现动态切换图片的方法
2015/05/18 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
[00:12]DAC SOLO赛卫冕冠军 VG.Paparazi灬展现SOLO技巧
2018/04/06 DOTA
[12:21]VICI vs TNC (BO3)
2018/06/07 DOTA
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
Python + OpenCV 实现LBP特征提取的示例代码
2019/07/11 Python
Python遍历字典方式就实例详解
2019/12/28 Python
python+OpenCV实现图像拼接
2020/03/05 Python
Python实现汇率转换操作
2020/05/03 Python
Python3爬虫中关于Ajax分析方法的总结
2020/07/10 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
HTML5的新特性(1)
2016/03/03 HTML / CSS
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
英国现代市场:ARKET
2019/04/10 全球购物
美国中西部家用医疗设备商店:Med Mart(轮椅、踏板车、升降机等)
2019/04/26 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
奥巴马胜选演讲稿
2014/05/15 职场文书
2014和解协议书范文
2014/09/15 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
2015年领班工作总结
2015/04/29 职场文书
2015年中学图书馆工作总结
2015/07/22 职场文书
工程移交协议书
2016/03/24 职场文书
OpenCV-Python实现油画效果的实例
2021/06/08 Python