Node.js 内置模块crypto加密模块(5) RSA

RSA加密算法算法

写在前面:网站

了解RSA算法的原理请查看下面的文章ui

一文搞懂 RSA 算法  来源:简书  做者:somenzz加密

 

在使用 Node 进行 RSA 加密以前咱们首先须要获取RSA公共和私有密钥:spa

1.下载 OpenSSL命令行

两个网址:一个是 官方网站 ,另外一个是社区整理网站code

 2.安装 OpenSSL ,查看下面的文章orm

OpenSSL下载安装  来源:简书  做者:涓涓细流_708dblog

 3.使用 OpenSSL 生成 RSA 密钥utf-8

a.打开命令行,进入到安装OpenSSL的bin目录下(个人是默认安装到C盘)

cd C:\OpenSSL-Win64\bin

在命令行中执行

openssl genrsa -aes256 -out rsa-key.pem 2048

上面命令的意思是使用 aes256 进行加密,加密密钥长度为 2048 位,并将结果输出到 res-key.pem 文件中,默认将生成的文件输出到 bin 目录下

执行完后是须要输入密码的,这个密码是用来对RSA密钥加密的

b.经过上面的加密文件 rsa-key.pem 生成私有密钥 rsa-prv.pem

openssl rsa -in rsa-key.pem -outform PEM -out rsa-prv.pem

输入以前生成加密文件时输入的密码

c.生成公共密钥 rsa-pub.pem

openssl rsa -in rsa-key.pem -outform PEM -pubout -out rsa-pub.pem

经过上面生成的步骤生成私钥和公钥后,咱们就能够使用Node的方式对文件进行rsa加密

 

使用 Node 对文件进行 RSA 加密:


'use strict'; const crypto = require('crypto'); const fs = require('fs'); //定义一个同步读取文件的方法 let getFile = (file) => { try { let pubKey = fs.readFileSync(file, 'utf-8'); return pubKey; } catch(err) { console.log(err); return false; } } //读取rsa公钥 let pubKey = getFile('./rsa-pub.pem'); //读取rsa加密私钥 let prvKey = getFile('./rsa-prv.pem'); //读取须要加密的文件 let data = getFile('./data.txt'); //使用私钥加密,公钥解密 const prv_enCrypt = crypto.privateEncrypt(prvKey, Buffer.from(data, 'utf-8') ); const pub_deCrypt = crypto.publicDecrypt(pubKey, prv_enCrypt, 'utf-8'); console.log('使用私钥加密以后的文件: ' + prv_enCrypt.toString('hex')); console.log('使用公钥解密以后的文件: ' + pub_deCrypt.toString()); //除了能够使用私钥加密公钥解密外还能够使用私钥加密公钥解密 const pub_enCrypt = crypto.publicEncrypt(pubKey, Buffer.from(data, 'utf-8')); const prv_deCrypt = crypto.privateDecrypt(prvKey, pub_enCrypt); console.log('使用公钥加密以后的文件: ' + pub_enCrypt.toString('hex')); console.log('使用私钥解密以后的文件: ' + prv_deCrypt.toString()); //加密后的文件使用fs(文件系统模块)导出 let exEncryptFile = fs.createWriteStream('./exEncryptFile.txt') exEncryptFile.write( prv_enCrypt.toString('hex') ); exEncryptFile.end();

注:

1.RSA的加密方法的第二个参数须要传入 buffer 类型的数据

2.data.txt 文件是在同一目录下须要加密的文件,记得在执行上面代码的时候建立一个须要加密的文件

3.RSA加密方法便可以使用公钥加密私钥解密,也能够使用私钥加密公钥解密

相关文章
相关标签/搜索