添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

在linux系统中 使用 openssl 生成私钥、公钥

# 生成RSA私钥
[root@zhujiwu mao_siyu]# openssl genrsa -out rsa_private_key.pem 1024
Generating RSA private key, 1024 bit long modulus
..................++++++
......++++++
e is 65537 (0x10001)
[root@zhujiwu mao_siyu]#
# 使用RSA私钥 生成RSA公钥
[root@zhujiwu mao_siyu]# openssl rsa -in rsa_private_key.pem -pubout -out rsa_pubwp_key.pem
writing RSA key
[root@zhujiwu mao_siyu]# ll
-rw-r--r--  1 root root  891 4月  10 21:01 rsa_private_key.pem
-rw-r--r--  1 root root  272 4月  10 21:03 rsa_pubwp_key.pem
[root@zhujiwu mao_siyu]#

将公钥与私钥存入到项目的 ssl文件夹中

│ package.json │ test.js └─ssl README.md rsa_private_key.pem rsa_pubwp_key.pem

test.js

const NodeRSA = require('node-rsa');
const fs = require('fs');
// 共享密钥
const shareKey = '!@#¥%……&*_shareKey';
// 公钥加密
const publicKey = new NodeRSA(fs.readFileSync('ssl/rsa_pubwp_key.pem'));
const encrypted = publicKey.encrypt(shareKey, 'base64');
console.log(`加密后的共享密钥: {encrypted}`);
// 私钥解密
const privateKey = new NodeRSA(fs.readFileSync('ssl/rsa_private_key.pem'));
const decrypted = privateKey.decrypt(encrypted, 'utf8');
console.log(`解密后的共享密钥:{decrypted}`);

package.json

"name": "rsa-test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "node test.js" "author": "", "license": "ISC", "dependencies": { "node-rsa": "^0.4.2"

共享密钥的含义是指对数据的加解密只使用一把共同的密钥;
前后端正常情况下都用 共享密钥来进行加解密,因为共享密钥进行加解密速度快,缺点是很容易被抓包拦截获取到密钥;
所以根据前人的经验又对共享密钥的传输做了更高级加密,使用RSA 非对称加密算法来对共享密钥在进行二次加密,防止在客户端在与服务端交互过程中数据被抓包拦截获取;