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 相关文章推荐
基于promise.js实现nodejs的promises库
Jul 06 NodeJs
NodeJS使用formidable实现文件上传
Oct 27 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
Nodejs中使用captchapng模块生成图片验证码
May 18 NodeJs
基于nodejs 的多页面爬虫实例代码
May 31 NodeJs
nodejs结合socket.io实现websocket通信功能的方法
Jan 12 NodeJs
nodejs高大上的部署方式(PM2)
Sep 11 NodeJs
NodeJs之word文件生成与解析的实现代码
Apr 01 NodeJs
NodeJs实现简易WEB上传下载服务器
Aug 10 NodeJs
nodejs使用socket5进行代理请求的实现
Feb 21 NodeJs
NodeJs内存占用过高的排查实战记录
May 10 NodeJs
详解NodeJS模块化
Jun 15 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
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
PHP获取远程图片并保存到本地的方法
2015/05/12 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
php基于单例模式封装mysql类完整实例
2016/10/18 PHP
PHP面向对象之工作单元(实例讲解)
2017/06/26 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
用jQuery实现检测浏览器及版本的脚本代码
2008/01/22 Javascript
兼容ie和firefox js关闭代码
2008/12/11 Javascript
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
2012/03/07 Javascript
网页打开自动最大化的js代码
2012/08/22 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
js实现感应鼠标图片透明度变化的方法
2015/02/20 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
详解Vue Elememt-UI构建管理后台
2018/02/27 Javascript
vuejs选中当前样式active的实例
2018/08/22 Javascript
使用pm2自动化部署node项目的方法步骤
2019/01/28 Javascript
VUE引入第三方js包及调用方法讲解
2019/03/01 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
微信小程序分包加载代码实现方法详解
2019/09/23 Javascript
Python Socket编程详细介绍
2017/03/23 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
工程开工庆典邀请函
2014/02/01 职场文书
大学生党校培训心得体会
2014/09/11 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
迟到检讨书
2015/01/26 职场文书
会议欢迎词范文
2015/01/27 职场文书
人事任命书范本
2015/09/21 职场文书