RSA加密/解密工具
公钥加密、私钥解密,支持密钥生成和数字签名
关于 RSA 加密
RSA (Rivest–Shamir–Adleman) 是最早也是应用最广泛的公钥加密系统之一。与使用单一密钥的对称算法(如 AES)不同,RSA 使用一对密钥:用于加密的公钥和用于解密的私钥。这种非对称性允许您公开分享公钥,同时保持私钥的机密性。
RSA 的安全性基于大整数分解的数学难题(分解两个大质数的乘积)。它是 SSL/TLS 证书、电子邮件加密 (PGP) 和安全远程连接 (SSH) 的核心标准。
主要功能
- <strong>密钥生成</strong>:生成 PEM 格式的安全 1024、2048 或 4096 位 RSA 密钥对。
- <strong>加密</strong>:使用公钥加密消息,只有持有私钥的人才能解密读取。
- <strong>解密</strong>:使用您的私钥解密收到的加密消息。
- <strong>数字签名</strong>:使用私钥签署消息以证明真实性;任何人都可以用公钥验证签名。
- <strong>填充模式</strong>:支持现代的 <strong>OAEP</strong>(最安全)和传统的 <strong>PKCS#1 v1.5</strong>(兼容性)。
- 支持多种哈希算法:SHA-1、SHA-256、SHA-384、SHA-512
- 填充模式选择:支持OAEP(推荐)和PKCS#1 v1.5(传统兼容)
- 多格式支持:输入/输出支持文本、Base64、Hex等多种格式
密钥长度选择
选择合适的密钥长度对于安全性和性能至关重要:
- 1024-bit: 1024位:不推荐用于新系统,可能在数年内被破解
- 2048-bit: 2048位:当前推荐的最小长度,适合大多数应用
- 4096-bit: 4096位:提供最高安全性,但加密/解密速度较慢
填充模式
本工具支持两种RSA填充模式,可根据安全需求和兼容性要求选择:
- OAEP: 最优非对称加密填充,提供语义安全性,可防止选择密文攻击。推荐用于新系统。
- PKCS#1 v1.5: 传统填充模式,存在已知的Bleichenbacher攻击漏洞。仅建议在需要与旧系统兼容时使用。
格式选项
本工具支持多种数据格式,方便与不同系统进行交互:
- 文本: 直接输入/输出UTF-8文本,适合处理普通字符串
- Base64: Base64编码格式,常用于网络传输和存储二进制数据
- Hex: 十六进制格式,便于查看和调试二进制数据
使用场景
- 安全通信:加密敏感数据后传输
- 数字签名:验证消息的真实性和完整性
- 密钥交换:安全地交换对称密钥
- 身份认证:验证发送者身份
- 软件许可:生成和验证许可证
安全最佳实践
- <strong>密钥长度</strong>:至少使用 2048 位密钥。推荐使用 4096 位以获得长期安全性。1024 位已不再安全。
- <strong>填充模式</strong>:尽量使用 OAEP 填充而非 PKCS#1 v1.5。OAEP 能有效防止“填充预言机”攻击。
- <strong>密钥保密</strong>:永远不要分享您的私钥。拥有私钥的人可以读取您的加密消息或冒充您。
- <strong>混合加密</strong>:RSA 计算缓慢且有长度限制。对于大文件,请使用 RSA 加密随机 AES 密钥,然后用 AES 加密文件。
- <strong>仅限客户端</strong>:此工具完全在您的浏览器中使用 Web Crypto API 运行。您的私钥永远不会离开您的设备。
技术限制
- <strong>数据大小</strong>:RSA 不能直接加密超过其密钥长度(减去填充开销)的数据。例如,使用 OAEP 的 2048 位密钥最多只能加密约 214 字节。
- <strong>性能</strong>:RSA 比对称加密(AES)慢得多。不要用它来加密大量数据。
- <strong>格式</strong>:此工具使用标准的 PEM 格式(带头部的 Base64)。请确保您的其他工具支持此格式。
技术参考
常见问题 (FAQ)
在此网站生成/使用 RSA 密钥安全吗?
是的。该工具通过 JavaScript 完全在您的浏览器中运行。没有任何密钥或数据会发送到我们的服务器。您的私钥严格保留在您的设备上。
公钥和私钥有什么区别?
**公钥**用于加密数据和验证签名,可以公开分享。**私钥**用于解密数据和创建签名,必须严格保密。只有私钥才能解密公钥加密的内容。
为什么我无法加密很长的文本?
RSA 的最大消息长度受到密钥长度和填充模式的限制。对于使用 OAEP 填充的 2048 位密钥,限制约为 214 字节。对于更长的文本,请使用“混合加密”(即先用 AES 加密数据,再用 RSA 加密 AES 密钥)。
我应该使用 OAEP 还是 PKCS1 v1.5 填充?
只要可能,您都应该使用 **OAEP**。它提供了更好的安全性。PKCS#1 v1.5 是旧标准,容易受到填充攻击,通常仅用于兼容旧系统。
我应该选择多大的密钥(2048 vs 4096)?
**2048 位**是目前的行业标准,对大多数用途来说是安全的。**4096 位**更安全,但生成和使用速度要慢得多。**1024 位**已被认为不安全,不应使用。
什么是 PEM 格式?
PEM (Privacy Enhanced Mail) 是存储加密密钥的标准格式。它本质上是 Base64 编码的 ASN.1 数据,并包裹在 `-----BEGIN PUBLIC KEY-----` 这样的头部中。