RSA 是目前应用最广泛的非对称加密算法之一,在 API 签名、数据加密、身份认证等场景中无处不在。如果你需要快速生成 RSA 密钥对、对敏感数据进行加密或解密,jsjson.com 的 RSA 在线加密解密工具 能帮你免去配置环境的麻烦,在浏览器内即可完成全部操作。
📋 RSA 加密算法简介
RSA(Rivest–Shamir–Adleman)是一种非对称加密算法,由三位数学家于 1977 年提出。与对称加密不同,RSA 使用一对密钥——公钥和私钥——来分别完成加密和解密操作。
RSA 的核心特性:
- 非对称性:公钥加密,私钥解密;或私钥签名,公钥验签
- 安全性:基于大数因式分解的数学难题,2048 位密钥在当前算力下足够安全
- 不可逆性:从公钥无法推导出私钥
RSA 广泛应用于 HTTPS/TLS 握手、SSH 密钥认证、JWT 签名、邮件加密(PGP)等场景。开发者在调试接口时,经常需要临时生成密钥对或验证加解密逻辑,此时一个在线 RSA 工具就非常实用。
🔧 RSA 的常见应用场景
1. API 接口签名与验签
在对接第三方支付(支付宝、微信支付)或开放平台 API 时,通常需要用 RSA 私钥对请求参数签名,服务端用公钥验签。开发调试阶段,你可以用 RSA 在线工具 快速验证签名结果是否正确。
2. 敏感数据加密传输
登录密码、身份证号等敏感信息在前端传输时,可以使用后端提供的 RSA 公钥加密,确保传输过程中即使被截获也无法解密。RSA 工具方便你在本地测试整个加解密流程。
3. SSH 与 TLS 证书管理
生成 SSH 密钥对、配置 TLS 客户端证书时,需要了解 RSA 密钥的格式和结构。使用在线工具可以帮助你理解 PKCS#1 和 PKCS#8 格式的区别。
🔧 如何使用 jsjson.com 的 RSA 工具
访问 https://jsjson.com/tools/rsa 即可使用,无需注册或安装任何软件。
第一步:生成密钥对
点击「生成密钥对」按钮,工具会自动生成 2048 位的 RSA 公钥和私钥。密钥以 PEM 格式显示,可直接复制使用。
第二步:加密数据
将公钥粘贴到公钥输入框,在明文区域输入需要加密的内容,点击「加密」按钮,即可得到 Base64 编码的密文。
第三步:解密数据
将私钥粘贴到私钥输入框,把密文粘贴到密文区域,点击「解密」按钮,即可还原为原始明文。
安全提示:所有加密和解密操作均在浏览器本地使用
JSEncrypt库完成,数据不会离开你的设备。但建议不要使用在线工具处理生产环境的真实私钥。
💡 RSA 实用技巧
技巧一:理解密钥长度的选择
RSA 密钥长度直接影响安全性和性能:
| 密钥长度 | 安全级别 | 加密速度 | 适用场景 |
|---|---|---|---|
| 1024 位 | 已不安全 | 快 | 不推荐使用 |
| 2048 位 | 安全 | 适中 | 通用推荐 |
| 4096 位 | 高安全 | 慢 | 高安全需求 |
jsjson.com 的 RSA 工具默认生成 2048 位密钥,满足绝大多数开发场景需求。
技巧二:RSA 加密的数据长度限制
RSA 能加密的数据长度受密钥长度限制。对于 2048 位密钥,最大明文长度约为 245 字节(PKCS#1 v1.5 填充)。如果需要加密较长的数据,通常的做法是:
- 用 AES 等对称算法加密原始数据
- 用 RSA 加密 AES 的密钥
- 将密文和加密后的密钥一起传输
这种混合加密模式在实际工程中非常常见。
技巧三:公钥私钥的格式区别
RSA 密钥有两种常见格式:
- PKCS#1:以
-----BEGIN RSA PUBLIC KEY-----开头,仅包含 RSA 密钥参数 - PKCS#8:以
-----BEGIN PUBLIC KEY-----开头,包含算法标识符,是更通用的格式
大多数现代语言和框架默认使用 PKCS#8 格式。jsjson.com 的 RSA 工具兼容两种格式。
技巧四:用 RSA 实现数据签名
签名是 RSA 的另一大核心用途。流程如下:
- 发送方用私钥对数据的哈希值进行签名
- 接收方用公钥验证签名,确认数据未被篡改且来源可信
签名 = RSA_Encrypt(PrivateKey, SHA256(Data))
验证 = RSA_Decrypt(PublicKey, Signature) == SHA256(Data)
如果你需要计算 SHA256 哈希值,可以配合使用 jsjson.com 的 SHA256 在线工具。
技巧五:在代码中使用生成的密钥对
生成密钥对后,可以直接在代码中使用。以下是 JavaScript 示例:
import JSEncrypt from 'jsencrypt';
// 加密
const encrypt = new JSEncrypt();
encrypt.setPublicKey(publicKey);
const encrypted = encrypt.encrypt('Hello RSA!');
// 解密
const decrypt = new JSEncrypt();
decrypt.setPrivateKey(privateKey);
const decrypted = decrypt.decrypt(encrypted);
❓ 常见问题 FAQ
RSA 加密和 AES 加密有什么区别?
RSA 是非对称加密,使用公钥/私钥对,适合密钥交换和签名,但速度较慢。AES 是对称加密,使用同一个密钥,加解密速度快,适合大量数据加密。实际项目中常将两者结合使用。
RSA 密钥泄露了怎么办?
如果私钥泄露,应立即废弃该密钥对,重新生成新的密钥对,并更新所有使用旧公钥的系统。私钥是 RSA 安全性的根基,务必妥善保管。
在线 RSA 工具安全吗?
jsjson.com 的 RSA 工具所有运算在浏览器本地完成,代码开源可审计。但出于安全最佳实践,建议不要在任何在线工具中使用生产环境的真实私钥。测试和调试时使用工具生成的临时密钥对即可。
RSA 和 ECC(椭圆曲线加密)哪个更好?
ECC 在相同安全级别下密钥更短、性能更好(256 位 ECC ≈ 3072 位 RSA)。但 RSA 兼容性更广泛,生态更成熟。新项目可以考虑 ECC,已有 RSA 基础设施的项目无需强制迁移。
如何在 Linux 命令行生成 RSA 密钥对?
可以使用 OpenSSL 命令:
# 生成 2048 位 RSA 私钥
openssl genrsa -out private.pem 2048
# 从私钥提取公钥
openssl rsa -in private.pem -pubout -out public.pem
如果不想安装 OpenSSL,直接使用 jsjson.com 的 RSA 在线工具 生成密钥对更快捷。
🔗 相关工具推荐
- SHA256 在线计算工具 — 计算数据的 SHA256 哈希值,配合 RSA 签名使用
- MD5 在线加密工具 — 快速计算 MD5 校验值
- Base64 编解码工具 — RSA 密文通常以 Base64 格式传输
- JSON 格式化工具 — 格式化包含加密数据的 API 请求和响应