RSA 加密解密工具
在线 RSA 非对称加密,支持密钥对生成、公钥加密、私钥解密
加密配置
密钥管理
选择操作
什么是 RSA 加密?
RSA(Rivest-Shamir-Adleman)是世界上第一个广泛使用的非对称加密算法,由三位 MIT 数学家 Ron Rivest、Adi Shamir 和 Leonard Adleman 于 1977 年发明。与 AES 等对称加密算法不同,RSA 使用一对密钥:公钥用于加密,私钥用于解密。公钥可以公开分享,而私钥必须严格保密,这种机制从根本上解决了密钥分发的难题。 RSA 的安全性基于大整数质因数分解的数学难题——将两个大素数相乘非常容易,但将结果分解回原来的两个素数却极其困难。目前推荐使用 2048 位或更长的密钥,因为 1024 位密钥已被认为不够安全。量子计算机的发展对 RSA 构成潜在威胁,但目前实用的量子计算机尚未出现。 RSA 的应用场景包括:HTTPS/TLS 握手阶段的密钥交换、数字签名和身份验证(如 SSH、代码签名)、电子邮件加密(PGP/GPG)、区块链和加密货币的交易签名等。在实际应用中,RSA 通常用于加密对称密钥(如 AES 密钥),再由对称密钥加密实际数据,这种混合加密方式兼顾了安全性和性能。本工具使用浏览器原生 Web Crypto API 实现 RSA 加密解密,所有操作在本地完成。
使用方法
基本操作
- 选择密钥长度(推荐 2048 位或以上)
- 选择填充方式(推荐 OAEP,安全性更高)
- 选择哈希算法(推荐 SHA-256)
- 点击「生成密钥对」创建公钥和私钥
- 加密时:将公钥粘贴到公钥区域,输入明文,自动输出密文
- 解密时:将私钥粘贴到私钥区域,输入密文,自动输出明文
- 复制结果或点击「交换」按钮交换输入输出
参数说明
使用示例
基本加密
使用 RSA 公钥加密一条消息
1. 生成 2048 位密钥对
2. 复制公钥
3. 输入明文:Hello, RSA!
4. 选择 OAEP + SHA-256
5. 输出:Base64 格式的密文典型工作流
安全通信的标准流程
发送方:
1. 获取接收方的公钥
2. 用公钥加密消息
3. 发送密文
接收方:
1. 用自己的私钥解密
2. 获取原始消息使用技巧
最佳实践建议
RSA 适合加密小数据(如密钥)
大量数据应使用混合加密:
1. RSA 加密 AES 密钥
2. AES 加密实际数据
3. 发送 RSA 密文 + AES 密文常见问题 (FAQ)
Q: RSA 和 AES 有什么区别?
A: RSA 是非对称加密算法,使用公钥加密、私钥解密,适合密钥交换和数字签名,但速度较慢,只能加密小数据。AES 是对称加密算法,使用同一密钥加解密,速度快,适合加密大量数据。实际应用中常将两者结合:用 RSA 交换 AES 密钥,再用 AES 加密数据。
Q: 密钥长度应该选择多少?
A: 2048 位是当前的最低安全标准,适合一般用途。3072 位提供更高的安全裕度,适合企业级应用。4096 位提供最高安全性,但加解密速度明显变慢。NIST 建议 2030 年后使用 3072 位以上密钥。1024 位密钥已被认为不安全,应避免使用。
Q: OAEP 和 PKCS#1 v1.5 有什么区别?
A: OAEP(Optimal Asymmetric Encryption Padding)是推荐的填充方式,具有语义安全性——相同明文每次加密产生不同密文,能防止选择密文攻击。PKCS#1 v1.5 是旧标准,虽然兼容性好,但存在已知的攻击漏洞(如 Bleichenbacher 攻击)。新应用应始终使用 OAEP。
Q: RSA 能加密多大的数据?
A: RSA 加密的数据大小受密钥长度和填充方式限制。对于 2048 位密钥 + OAEP(SHA-256),最大明文约 190 字节。对于大量数据,应使用混合加密:先生成随机会话密钥,用 RSA 加密会话密钥,再用 AES 等对称算法加密实际数据。
Q: 公钥和私钥有什么区别?
A: 公钥用于加密数据,可以公开分享给任何人。私钥用于解密数据,必须严格保密。用公钥加密的数据只能用对应的私钥解密,反之亦然(用于签名时)。公钥通常以 SubjectPublicKeyInfo(SPKI)格式存储,私钥以 PKCS#8 格式存储,都使用 PEM 编码。
Q: 这个工具的加密安全吗?
A: 本工具使用浏览器原生 Web Crypto API 实现 RSA 加密,算法实现符合标准。但需要注意:1)浏览器环境的安全性不如专业加密设备;2)私钥可能通过浏览器扩展或控制台泄露;3)本工具适合学习、测试和一般用途,生产环境建议使用专业加密服务。所有数据处理都在浏览器本地完成。
Q: 为什么解密时提示失败?
A: 解密失败的常见原因:1)使用了错误的私钥(必须与加密时的公钥配对);2)密文格式不正确(检查 Base64/Hex 格式是否匹配);3)填充方式或哈希算法不一致;4)密文被篡改或截断;5)密钥 PEM 格式不完整(包含头尾标记行)。请确保加密和解密使用完全相同的配置和密钥对。