如何使用 RSA 进行数据加密和解密?

· 约 3 分钟读完 · 第 158 / 211 章

推荐答案

本题详细解读

RSA 加密算法简介

RSA 是一种非对称加密算法,它使用一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据。RSA 的安全性基于大整数分解的困难性。

生成 RSA 密钥对

在 Node.js 中,可以使用 crypto 模块的 generateKeyPairSync 方法生成 RSA 密钥对。modulusLength 参数指定密钥的长度,通常为 2048 位。

加密过程

  1. 公钥加密:使用公钥对数据进行加密。加密后的数据是二进制格式,通常转换为 Base64 字符串以便传输或存储。
  2. 私钥解密:使用私钥对加密后的数据进行解密,还原出原始数据。

代码实现

  • 引入库:使用 crypto 模块进行 RSA 加密和解密操作。
  • 生成密钥对:通过 generateKeyPairSync 方法生成公钥和私钥。
  • 加密函数:encryptWithPublicKey 函数使用公钥加密数据。
  • 解密函数:decryptWithPrivateKey 函数使用私钥解密数据。

示例

在示例中,我们使用生成的公钥加密字符串 "Hello, RSA!",然后使用私钥解密,验证加密和解密的正确性。

注意事项

  • 密钥管理:私钥必须严格保密,公钥可以公开。
  • 性能:RSA 加密和解密操作相对较慢,通常用于加密小量数据或加密对称密钥。
  • 数据长度限制:RSA 加密的数据长度受密钥长度限制,通常需要结合对称加密算法(如 AES)来处理大量数据。