node.js下使用RSA加密事例(windows)

1.安装openss

直接下载window下的安装包

http://houjixin.blog.163.com/blog/static/3562841020144143494875/

以我发博文现在的例子说明,大家都是64位操作系统吧。

选择最新版本的win64版本,体积更大的33MB的安装程序下载安装吧

选择安装目录傻瓜安装下一步下一步一直到完成

2.生成RSA密钥文件 我安装到了C:\OpenSSL-Win64下  到C:\OpenSSL-Win64\bin目录下点击openssl.exe

启动后输入genrsa -out rsa_private_key.pem 1024 回车

此时,我们可以在bin文件夹中看到一个文件名为rsa_private_key.pem的文件,用记事本方式打开它,可以看到-----BEGIN RSA PRIVATE KEY-----开头,-----END RSA PRIVATE KEY-----结尾的没有换行的字符串,这个就是原始的私钥。

3.把RSA私钥转换成PKCS8格式

使用cmd cd到目录去执行命令 ,调整cmd命令框的宽度,为什么不直接点openssl.exe 我下面说

输入命令pkcs8 -topk8 -inform PEM -in rsa_private_key.pem -outform PEM –nocrypt,并回车
得到生成功的结果,这个结果就是PKCS8格式的私钥

(如果上面不用cmd中执行openssl.exe,你会发现无法复制完整转换后的文件)

右键点击openssl窗口上边边缘,选择编辑→标记,选中要复制的文字(如上图),
此时继续右键点击openssl窗口上边边缘,选择编辑→复制,
把复制的内容粘土进一个新的记事本中,重命名为rsa_private.key文件,只要知道这个是PKCS8格式的私钥即可

4.生成公钥

输入命令rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem,并回车,
得到生成成功的结果,如下图:

5.node.js实例,使用了第三方库node-rsa

var NodeRSA = require(‘node-rsa‘);
var fs= require(‘fs‘);  

var onerror =(e) =>{
	console.log("解密失败");

}
var onfinally =() =>{
	console.log("最终做什么");
}

fs.readFile(‘rsa_private.key‘,‘utf-8‘,function(err,data){
    if(err){
        console.log(data);
    }else{
        console.log(data);
		privatekey= new NodeRSA(data);

			var text = ‘Hello RSA!‘;
			var encrypted = privatekey.encrypt(text, ‘base64‘);
			console.log(‘加密encrypted: ‘, encrypted);
			var decrypted = privatekey.decrypt(encrypted, ‘utf8‘);
			console.log(‘解密decrypted: ‘, decrypted);

			var encrypted1 =‘mIJocRfF+MWS3J6+fkPSM9ZAMSZhXxHC+/w0UuT+t6ZmLnoamQ6WKwOBPQ+o+mazk61MFdyImWVW+51dYLc7kE4Eey4y+qB23/ahC9Mi/bJqivWgUHeLPjfLMqXcNVrFSbOB33+7N/fsWAWLJmHuFHaNwP1DqPLH9nY501qoMvY=‘;
			var decrypted = privatekey.decrypt(encrypted1, ‘utf8‘);
			console.log(‘使用正确的加密串解密decrypted: ‘, decrypted);

			try{
				var encrypted2 =‘c7kE4Eey4y+qB23/ahC9Mi/bJqivWgUHeLPjfLMqXcNVrFSbOB33+7N/fsWAWLJmHuFHaNwP1DqPLH9nY501qoMvY=‘;
				var decrypted = privatekey.decrypt(encrypted2, ‘utf8‘);

			}catch(e){
				onerror(e);
			}finally{
				onfinally();
			}

    }
})

  

6.私钥文件如何放置到全局变量中,闭包写的,可改进可提出,勿吐槽,也可以放到redis或者memcache中

RSAkey.js

var fs= require(‘fs‘);
var path = require(‘path‘);

module.exports = (function(){
    var private = ‘‘;//在函数内声明一个变量,作用域是函数内

    return function(){ //返回的一个function能访问到_value,所以_value并不是global级别的变量,但是可以通过这个接口访问到
        if(private==‘‘) {
            var paths = path.resolve(__dirname,‘../rsa_private.key‘);
            fs.readFile(paths, ‘utf-8‘, function (err, data) {
                private = data;
                if(private.length!=0){
                    console.log("success read RSA file");
                }
                return private;
            });
        }else{
            return private;
        }
    };

})();//一个立即执行的匿名函数

 

初始化的时候引入

var RSAkey = require(‘./util/RSAkey‘);

var key = RSAkey(); 

调用时候引入

var key = RSAkey(); 
时间: 2024-10-04 05:47:07

node.js下使用RSA加密事例(windows)的相关文章

node.js 下依赖Express 实现post 4种方式提交参数

上面这个图好有意思啊,哈哈, v8威武啊.... 在2014年的最后一天和大家分享关于node.js 如何提交4种格式的post数据. 上上一篇说到了关于http协议里定义的4种常见数据的post方法 ,详细介绍请点击查看. 分别是这四种: www-form-urlencoded, form-data, application/json, text/xml Express 依赖 bodyParser 对请求的包体进行解析,默认支持:application/json, application/x-

npm 是node.js下带的一个包管理工具

npm 是node.js下带的一个包管理工具          npm install -g webpack webpack是一个打包工具 gulp是一个基于流的构建工具,相对其他构件工具来说,更简洁更高效 npm install -g gulp //全局安装 npm install --save-dev gulp //安装到当前项目并在package.json中添加依赖cnpm install -g -vue-cli 安装脚手架 webpack是模块化管理的工具,使用webpack可实现模块按

Node.js安装及环境配置之Windows篇

一.安装环境 1.本机系统:Windows 10 Pro(64位)2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1.下载对应你系统的Node.js版本:https://nodejs.org/en/download/2.选安装目录进行安装3.环境配置4.测试 三.前期准备 1.Node.js简介简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使

node.js下用Express搭建服务器(内含多种坑爹报错解决方法)

如题 环境:windows 8 64bit\node.js v0.10.33 我觉得有必要说一下,我把node.js没有装在默认目录下,而是自定义路径 E:\Program\nodejs 我觉得我后来遇到的很多问题与此有关. 好,然后我就开心地打开node,在cmd下输入 npm install -g express 它就果不其然地报错了,确切的错误我没记得,百度了下好像是-g那个参数的问题(开始不知道这个参数什么意思,后来才明白,就是装到node_gloabl目录下),所以我就把-g去掉,cd

Node.js 安装及环境配置之 Windows 篇

一.安装环境 1.本机系统:Windows 10 企业版(64位)2.Node.js:node-v8.9.4-x64.msi(64位) 二.安装Node.js步骤 1.下载对应自己系统对应的 Node.js 版本,地址:https://nodejs.org/zh-cn/2.选安装目录进行安装3.环境配置4.测试 三.前期准备 1.Node.js简介 Node.js? 是一个基于 Chrome V8 引擎的 JavaScript 运行时. Node.js 使用高效.轻量级的事件驱动.非阻塞 I/O

关于Node.js安装及环境配置之Windows篇

一.安装环境 1.本机系统:Windows 10 Pro(64位) 2.Node.js:v6.9.2LTS(64位) 二.安装Node.js步骤 1.下载对应你系统的Node.js版本:https://nodejs.org/en/download/ 2.选安装目录进行安装 3.环境配置 4.测试 三.前期准备 1.Node.js简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Nod

node.js 下使用 util.inherits 来实现继承

上一篇博客说到了node.js继承events类实现事件发射和事件绑定函数,其中我们实现了一个公用基类 _base ,然后在模型中差异化的定义了各种业务需要的模型并继承 _base 公共基类.但是其中的继承是一笔带过,今天详细的说下node.js中继承. var events=require('events'); var util=require('util');   function _base(){     this.emitter=new events.EventEmitter(this)

Node.js安装及环境配置(windows)

1.Node.js简介 简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.js 的包管理器 npm,是全球最大的开源库生态系统. 2.下载Node.js 打开官网下载链接:https://nodejs.org/en/download/ 下载 3.开始安装 下载完成后,双击"node-v6.9.2-x64.

ionic + node.js + Mongodb 开发环境安装(Windows 和 ios 系统)

1. Windows 环境. 1. Visual Studio Code.  作为源代码编辑器, 可以从此处  Visual Studio Code 下载, 注意选择Windows版本的. 2 . MongoDB.   用作后台数据库. 点击此处 MongoDB官方下载链接 . 可以选择msi or archive版本的都可以. 2.1 将MongoDB bin 目录加入windows 环境变量.Archive版本直接解压,找到 Bin目录,msi版本安装后找到安装目录,并定位到bin目录,然后