RSA

RSA, 是一种公钥加密算法。相关概念与作用, 可参考阮一峰老师的 《RSA算法原理》。

公钥用于对数据进行加密,私钥用于对数据进行解密。

本文记录使用 NodeJS 对数据进行 RSA 加密和解密的实现过程。

步骤如下:

  • 生成公/私钥对;
  • 使用公钥加密数据;
  • 使用私钥解密数据。

生成公/私钥对

import NodeRSA from 'node-rsa';
let key = new NodeRSA();
key.generateKeyPair();

let publicKey = key.exportKey('public');
let privateKey = key.exportKey('private');

console.log('public key: ', publicKey);
console.log('private key: ', privateKey);

生成的公钥 publicKey , 发给合作方, 用于加密数据; 生成的私钥 privateKey , 用于解密数据。公钥与私钥, 需要成对使用。

使用公钥加密数据

import NodeRSA from 'node-rsa';
let key = new NodeRSA();

const publicKey = '...';
// 导入公钥。
key.importKey(publicKey, 'public');

const msg = '需要加密的数据';
// 使用公钥加密。
const encrypted = key.encrypt(msg, 'base64');

console.log('encrypted: \n', encrypted);

使用私钥解密数据

import NodeRSA from 'node-rsa';
let key = new NodeRSA();

const privateKey = '...';
// 导入私钥。
key.importKey(privateKey, 'private');
// 已经加密的数据。
const encrypted = '...';
// 使用私钥解密。
const decrypted = key.decrypt(encrypted, 'utf8');

console.log('decrypted: \n', decrypted);