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开发微信公众号后台服务实例
Sep 03 NodeJs
ubuntu下安装nodejs以及升级的办法
May 08 NodeJs
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
Dec 30 NodeJs
Nodejs+Socket.io实现通讯实例代码
Feb 13 NodeJs
解析NodeJS异步I/O的实现
Apr 13 NodeJs
详解nodejs微信jssdk后端接口
May 25 NodeJs
Nodejs回调加超时限制两种实现方法
Jun 09 NodeJs
深入浅析Nodejs的Http模块
Jun 20 NodeJs
nodejs图片处理工具gm用法小结
Dec 12 NodeJs
nodejs 递归拷贝、读取目录下所有文件和目录
Jul 18 NodeJs
nodeJs的安装与npm全局环境变量的配置详解
Jan 06 NodeJs
NodeJS配置CORS实现过程详解
Dec 02 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
详解PHP中的PDO类
2015/07/06 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
PHP代码维护,重构变困难的4种原因分析
2016/01/25 PHP
自定义min版smarty模板引擎MinSmarty.class.php文件及用法
2016/05/20 PHP
php英文单词统计器
2016/06/23 PHP
PHP实现的曲线统计图表示例
2016/11/10 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
2017/01/17 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
2017/08/18 PHP
laravel5 Eloquent 实现事务方式
2019/10/21 PHP
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
JS过滤url参数特殊字符的实现方法
2013/12/24 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
jquery实现的用户注册表单提示操作效果代码分享
2015/08/28 Javascript
jQuery数据检索中根据关键字快速定位GridView指定行的实现方法
2016/06/08 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
python字典get()方法用法分析
2015/04/17 Python
python 匹配url中是否存在IP地址的方法
2018/06/04 Python
Python3.x+迅雷x 自动下载高分电影的实现方法
2020/01/12 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
pandas中的ExcelWriter和ExcelFile的实现方法
2020/04/24 Python
利用CSS3实现文字折纸效果实例代码
2018/07/10 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
好莱坞百老汇御用王牌美妆:Koh Gen Do 江原道
2018/04/03 全球购物
戴森台湾线上商城:Dyson Taiwan
2018/05/21 全球购物
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
电子商务专业自我鉴定
2013/12/18 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
普通话演讲稿
2014/09/03 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
golang内置函数len的小技巧
2021/07/25 Golang
css弧边选项卡的项目实践
2023/05/07 HTML / CSS