加密/哈希

RSA 加密/解密

生成 RSA 密钥对,使用公钥加密、私钥解密

密钥以 JWK(JSON Web Key)格式导出,可用于本工具内的加密/解密。

什么是 RSA?

RSA 是一种非对称加密算法:公钥用于加密,私钥用于解密。公钥可以公开分发,私钥必须保密。本工具使用 RSA-OAEP(SHA-256)标准,与 Web Crypto API 一致。

功能说明

  • 密钥生成:生成 2048 或 4096 位 RSA 密钥对,以 JWK(JSON Web Key)格式导出
  • 加密:使用公钥加密明文,得到 Base64 密文。明文长度受密钥模长限制(2048 位约 190 字节)
  • 解密:使用私钥解密 Base64 密文,得到明文

使用场景

  • 短数据加密:加密密钥、令牌等少量敏感数据
  • 与后端配合:后端用私钥解密,前端用公钥加密
  • 密钥交换:生成密钥对后,公钥发给对方,私钥本地保存

安全提示

私钥切勿泄露或提交到代码仓库。生产环境建议使用密钥管理服务(KMS)或安全存储。

常见问题

RSA 加密和签名的方向是相反的?
是的,这是初学者最容易混淆的点:加密用接收方的公钥加密、对方私钥解密(保机密);签名用自己私钥签名、对方公钥验证(保真实性与不可否认)。公钥加密的东西只有私钥能解,私钥签名的东西公钥能验证但无法伪造。
RSA 能加密任意长度的数据吗?
不能。RSA 单次加密的明文上限由密钥长度决定(2048 位密钥配合 OAEP 只能加密约 190 字节),而且极慢。标准做法是混合加密:用 RSA 加密一个随机 AES 密钥,再用 AES 加密实际数据——TLS、JWT 的 RSA 模式都是这个结构。
2048 位还安全吗?要不要上 4096?
2048 位在可预见的未来仍然安全(NIST 批准到 2030 年后),4096 位更保险但签名/验证慢 5–10 倍、密文更大。新生成密钥建议 3072 或 4096 位;真正需要担心的是 RSA-SHA1 这类过时签名算法和 1024 位旧密钥。