RSA 加密解密

免费在线 RSA 加密解密 工具。100% 本地计算,数据不离开您的设备,隐私安全有保障。

National Standards
Other
输出

结果将显示在这里...

输入 加密

使用指南

关于 RSA

RSA(Rivest–Shamir–Adleman)是目前使用最广泛的非对称加密算法,由三位密码学家于 1977 年发明。RSA 使用一对数学关联的密钥:公钥用于加密,私钥用于解密。其安全性基于对大整数进行因式分解的计算困难性。RSA 是现代安全通信的基石——SSL/TLS 证书、HTTPS、SSH、PGP 和数字签名都依赖 RSA 或其变体。

非对称加密:与对称算法(如 AES)不同,RSA 加密和解密使用不同的密钥。公钥可以自由分发——只有持有对应私钥的人才能解密用该公钥加密的消息。这一特性使得在不可信信道上安全交换密钥成为可能。

使用步骤

本工具支持 RSA 密钥对生成、加密和解密:

1. 选择密钥长度选择密钥长度(推荐 2048 位;高安全场景选 4096 位)。密钥越长越安全,但生成和运算速度越慢。
2. 生成密钥对点击「生成密钥对」,工具将生成一对公钥和私钥,均以 PEM 格式输出。
3. 保存密钥复制并安全保存两个密钥。私钥必须严格保密——一旦丢失将永久无法解密相关数据。
4. 加密粘贴公钥,输入明文,点击「加密」。输出为 Base64 编码的密文。
5. 解密粘贴私钥,将 Base64 密文粘贴到输入框,点击「解密」即可恢复明文。
隐私保护:所有密钥生成和加解密操作完全在浏览器本地执行,密钥和明文不会上传至任何服务器。

填充方案

RSA 必须配合填充方案才能保证安全性。本工具支持两种填充模式:

OAEP(推荐)最优非对称加密填充(Optimal Asymmetric Encryption Padding),配合 SHA-256 使用。现代标准——概率性、语义安全,能抵御选择密文攻击。所有新项目应使用 OAEP。
PKCS1v15(遗留)PKCS #1 v1.5 填充。被大量旧系统支持,但存在 Bleichenbacher 自适应选择密文攻击漏洞。仅在需要与遗留系统兼容时使用。
安全警告:新实现请始终使用 OAEP 填充。PKCS1v15 被认为是遗留方案,在实现不当时容易受到 Bleichenbacher 攻击。若必须与仅支持 PKCS1v15 的旧系统互操作,请确保传输层(如 TLS)提供额外保护。

密钥长度选择指南

选择合适的 RSA 密钥长度需要在安全性和性能之间取得平衡:

1024 位(弱)已不再被认为是安全的,现代计算资源可以破解。不要在任何新系统中使用。
2048 位(最低推荐)NIST 和各大 CA 机构推荐的当前行业最低标准,足以满足大多数应用到 2030 年左右的安全需求。
3072 位(强安全)适合需要 2030 年以后仍保持安全性的系统,安全级别与 AES-128 相当。
4096 位(高安全)安全级别与 AES-192 相当,适合长期有效的密钥(如根 CA 证书),但运算速度明显较慢。
实用建议:日常使用和短期密钥选择 2048 位;根证书颁发机构或需要长期有效的密钥选择 4096 位。密钥长度不影响加解密的正确性,只影响安全边际和性能。

常见问题

Q: 为什么 RSA 不能直接加密大文件?

A: RSA 只能加密小于其密钥长度减去填充开销的数据。2048 位密钥配合 OAEP-SHA256,最大明文仅约 190 字节。处理大数据的标准做法是混合加密:生成一个随机的 AES 密钥,用 AES 加密数据(支持任意大小),再用 RSA 公钥加密 AES 密钥。接收方用 RSA 私钥解密 AES 密钥,再用 AES 密钥解密数据。这正是 TLS 和 PGP 的工作方式。

Q: RSA 加密与 RSA 数字签名有什么区别?

A: RSA 加密:发送方用接收方的公钥加密,只有接收方的私钥能解密。保证机密性 RSA 数字签名:签名者用自己的私钥签名,任何持有公钥的人都可以验证。保证真实性和不可否认性 两者使用同一密钥对,但密钥角色相反。本工具专注于加密/解密功能。数字签名请使用 RSA-PSS(现代)或 PKCS1v15 签名模式的专用签名库。

Q: 密钥以什么格式导出?

A: 本工具以标准 PEM 格式导出密钥:
私钥:PKCS#8 格式(-----BEGIN PRIVATE KEY-----)——支持多种算法的现代标准格式。
公钥:SPKI 格式(-----BEGIN PUBLIC KEY-----)——Subject Public Key Info,被各种语言和库广泛支持。
这两种格式可直接被 OpenSSL、Node.js crypto、Python cryptography、Java 等主流平台导入使用,无需格式转换。

Q: 公钥可以公开分享吗?

A: 可以——这正是非对称加密的核心价值所在。公钥设计上就是用来自由分发的。任何人都可以用它加密数据,但只有持有对应私钥的人才能解密。注意以下几点:1)永远不要分享私钥——它是密钥对的秘密部分。2)通过可信渠道或证书颁发机构验证公钥的真实性,防止中间人替换。3)长期运行的应用应定期轮换密钥对。

Q: 什么时候用 RSA,什么时候用 AES?

A: RSA 用于密钥交换和小型秘密传输:无需预共享密钥即可建立共享秘密,但速度慢、明文大小受限。 AES 用于批量数据加密:速度快、支持任意大小,但需要预共享密钥。实际场景中两者配合使用——RSA 安全传输 AES 密钥,AES 加密实际数据。这种混合模式是 HTTPS、S/MIME 和 PGP 的基础。

Q: Bleichenbacher 攻击是什么,为什么值得关注?

A: Bleichenbacher 攻击(1998 年)是一种针对 PKCS1v15 填充的自适应选择密文攻击。攻击者通过提交大量密文并观察解密时是否返回有效填充错误,最终可以在不持有私钥的情况下恢复明文。许多真实的 TLS 实现曾受到该攻击变体的影响(2017 年的 ROBOT 攻击)。OAEP 填充正是为了在理论上抵御此类攻击而设计的。新实现请始终使用 OAEP。

使用场景

推荐:与 AES 结合的混合加密

这是 RSA 加密真实数据的最常见、最推荐的方式。生成一个随机的 AES-256-GCM 密钥,用 AES 加密数据,再用接收方的 RSA 公钥加密 AES 密钥。将 AES 加密的数据和 RSA 加密的 AES 密钥一并传输。接收方用 RSA 私钥解密 AES 密钥,再解密数据。这是 TLS、PGP 和 S/MIME 使用的模式——结合了 RSA 的密钥交换能力和 AES 的高速批量加密能力。

推荐配置:
  • ✅ RSA-OAEP(SHA-256)加密 AES 密钥
  • ✅ AES-256-GCM 加密数据
  • ✅ RSA 密钥最低 2048 位;长期密钥使用 4096 位
  • ❌ 不要用 RSA 直接加密大数据
推荐:安全传输小型秘密

RSA 非常适合在不可信信道上传输小型秘密——密码、令牌、对称密钥或配置参数。发送方用接收方的公钥加密秘密,只有接收方才能解密。这避免了预先共享对称密钥的需要。使用 OAEP 填充和至少 2048 位密钥,并在使用前验证公钥的真实性以防止中间人攻击。

推荐配置:
  • ✅ OAEP-SHA256 填充(推荐)
  • ✅ 2048 位或 4096 位密钥长度
  • ✅ 通过证书或指纹验证公钥真实性
  • 💡 2048 位 OAEP-SHA256 下秘密内容不超过 190 字节
推荐:SSL/TLS 证书密钥交换(原理介绍)

TLS 1.2 及更早版本使用 RSA 进行密钥交换:客户端用服务器证书中的 RSA 公钥加密预主密钥,只有服务器能解密。TLS 1.3 用椭圆曲线 Diffie-Hellman(ECDHE)替代了 RSA 密钥交换以实现前向保密,但 RSA 证书仍用于服务器身份认证。了解这一背景有助于理解为什么 RSA 密钥长度对长期证书至关重要。

推荐配置:
  • ✅ TLS 证书最低使用 2048 位
  • ✅ 根 CA 证书使用 4096 位
  • ✅ 优先使用 TLS 1.3(使用 ECDHE 而非 RSA 密钥交换)
  • 💡 TLS 1.3 中 RSA 仅用于身份认证,不参与密钥交换
推荐:数字签名(核心概念)

RSA 私钥可以对数据签名,对应公钥可验证签名。这证明消息来自私钥持有者且未被篡改。签名应用场景包括代码签名、文件签名、邮件签名(S/MIME)和 JWT(RS256)。新实现请使用 RSA-PSS(概率性、可证明安全);PKCS1v15 签名是遗留方案,但仍被广泛支持。本工具专注于加密/解密,如需签名功能,请使用专用签名库。

推荐配置:
  • ✅ RSA-PSS(现代,签名推荐方案)
  • ✅ PKCS1v15 签名(遗留,兼容性广)
  • ✅ 签名前先对消息进行哈希(SHA-256 或更强)
  • 💡 签名用私钥签、公钥验——与加密的密钥角色相反
不推荐:直接加密大文件

RSA 无法直接加密超过密钥长度减去填充开销的数据(2048 位 OAEP-SHA256 约为 190 字节)。直接用 RSA 加密大文件既不正确也不安全。应始终用 AES 加密数据,RSA 仅用于保护 AES 密钥(混合加密)。此外,RSA 比 AES 慢几个数量级——即使将大数据分割成 RSA 可处理的块,性能也完全无法接受。

推荐配置:
  • ❌ 不要用 RSA 直接加密文件或大型数据
  • ✅ 用 AES-256-GCM 加密数据
  • ✅ 用 RSA-OAEP 只加密 AES 密钥
  • 💡 混合加密模式被所有主流安全协议采用
不推荐:用于对称式批量数据加密

RSA 不应作为对称加密的替代品。它比对称加密慢 100–1000 倍,明文大小严格受限,且密文大小与密钥相同(2048 位 = 每块输出 256 字节)。用 RSA 加密频繁、大量的数据既不实际,还可能暴露数据模式。所有批量加密场景都应选择 AES。RSA 的职责是密钥建立和小型秘密传输,而非批量数据加密。

推荐配置:
  • ❌ 不要用 RSA 进行高频或大量数据加密
  • ✅ AES-256-GCM 用于快速、带认证的批量加密
  • ✅ RSA 只用于密钥交换或小型秘密
  • 💡 RSA + AES 组合使用,兼顾安全与性能

最佳实践建议

  • 新实现的 RSA 加密请始终使用 OAEP-SHA256 填充。PKCS1v15 是遗留方案,容易受到 Bleichenbacher 类攻击。
  • 密钥长度最低使用 2048 位;证书或需在 2030 年以后仍有效的密钥优先使用 4096 位。
  • RSA 无法加密超过约 190 字节的数据(2048 位 OAEP-SHA256)。大数据请使用混合加密:AES 加密数据,RSA 加密 AES 密钥。
  • 私钥必须严格保密并安全存储。私钥一旦泄露,所有用对应公钥加密的历史消息都将面临风险。
  • 数字签名请优先使用 RSA-PSS 而非 PKCS1v15 签名。通过可信证书或指纹验证公钥真实性,防止中间人攻击。

讨论与反馈

0 条评论