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加密方法便可以使用公鑰加密私鑰解密,也能夠使用私鑰加密公鑰解密

相關文章
相關標籤/搜索