RSA 加密解密
免费在线 RSA 加密解密 工具。100% 本地计算,数据不离开您的设备,隐私安全有保障。
结果将显示在这里...
输入 → 加密
使用指南
关于 RSA
RSA(Rivest–Shamir–Adleman)是目前使用最广泛的非对称加密算法,由三位密码学家于 1977 年发明。RSA 使用一对数学关联的密钥:公钥用于加密,私钥用于解密。其安全性基于对大整数进行因式分解的计算困难性。RSA 是现代安全通信的基石——SSL/TLS 证书、HTTPS、SSH、PGP 和数字签名都依赖 RSA 或其变体。
使用步骤
本工具支持 RSA 密钥对生成、加密和解密:
填充方案
RSA 必须配合填充方案才能保证安全性。本工具支持两种填充模式:
密钥长度选择指南
选择合适的 RSA 密钥长度需要在安全性和性能之间取得平衡:
常见问题
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 的基础。
使用场景
推荐:与 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 签名。通过可信证书或指纹验证公钥真实性,防止中间人攻击。