RSA 加解密 / 密钥生成

生成 RSA 密钥对并进行公钥加密、私钥解密。

什么是RSA 加解密 / 密钥生成?

RSA 是一种非对称加密算法,使用一对数学上关联但不同的密钥:公钥(Public Key)用于加密或验证签名,可以公开分发;私钥(Private Key)用于解密或生成签名,必须由持有者严格保密。本工具可以在浏览器本地生成 RSA 密钥对(常见长度 1024/2048/4096 位),并用公钥对文本加密、用对应私钥解密,验证密钥对是否匹配、体验非对称加密的基本流程。 与对称加密(如 AES)不同,RSA 加解密双方不需要提前共享同一把密钥,公钥可以放心公开,这也是它常被用于密钥交换、数字签名、HTTPS 证书体系的原因。

为什么使用RSA 加解密 / 密钥生成?

适合用于:学习和演示非对称加密原理、临时生成一对密钥测试加解密流程、验证某段密文是否能被特定私钥正确解开、给小段敏感文本(如短密码、密钥片段)做一次性加密再通过公开信道传输。 需要注意 RSA 直接加密能处理的数据长度有限(受密钥长度和填充方式限制,如 2048 位密钥配合 OAEP 填充大约只能加密 200 多字节),因此实际系统中通常不用 RSA 直接加密大段数据,而是用 RSA 加密一个随机生成的 AES 密钥,再用 AES 加密正文,这也是 HTTPS 等协议的常见做法(RSA 负责密钥交换,AES 负责实际数据加密)。

使用示例

生成一对测试密钥

点击生成 2048 位密钥对,得到 PEM 格式的公钥(以 -----BEGIN PUBLIC KEY----- 开头)和私钥(以 -----BEGIN PRIVATE KEY----- 开头),可分别复制保存,用于下面的加解密测试。

用公钥加密一段短信息

输入明文 "hello2026",粘贴上一步生成的公钥并加密,得到一段 Base64 格式的密文(每次加密因随机填充结果都不同,属正常现象);把该密文和对应私钥一起粘贴解密,应还原出原始的 "hello2026"。

验证密钥不匹配的报错

如果故意用另一对密钥中的私钥去解密,工具会解密失败并报错(如“解密失败”或“padding 错误”),这正说明私钥必须与加密所用的公钥严格配对,无法互相混用。

使用提示

私钥一旦泄露,用该公钥加密过的所有历史密文都可能被破解,测试完成后如非必要不要长期保存或分享生成的私钥内容。

常见问题

RSA 加密的明文长度有限制吗?
有。RSA-OAEP 单次加密的明文长度受密钥长度限制(约为「密钥字节数 - 66」),过长内容会提示错误,建议改用 AES 加密长文本,再用 RSA 加密 AES 密钥。
密钥对生成后能保存吗?
可以复制上方 PEM 文本自行保存。刷新页面后密钥会丢失,请提前妥善保存私钥,私钥泄露会导致密文可被他人解密。
数据会上传服务器吗?
不会。密钥生成、加密、解密均使用浏览器内置的 Web Crypto API(crypto.subtle)在本地完成。
密钥和明文会上传到服务器吗?
不会,密钥生成与加解密运算都在浏览器本地用 Web Crypto 等浏览器内置能力完成,不会把私钥或明文发送到任何服务器,可放心用于本地测试。
密钥长度该选多少?
目前 2048 位是业界普遍认为安全够用的最低标准,重要场景建议 3072 或 4096 位;1024 位已被认为不够安全,仅适合学习演示,不建议用于任何真实业务。
能直接用 RSA 加密一个很长的文件吗?
不建议也通常不可行,RSA 直接加密的明文长度受密钥长度限制,加密大文件应使用“RSA 加密 AES 密钥 + AES 加密文件内容”的混合加密方案。
生成的密钥可以直接用在生产环境吗?
工具生成的密钥算法实现正确,但生产环境的密钥管理还涉及安全存储、定期轮换等运维规范,建议关键业务的密钥通过专业的密钥管理系统(KMS)生成和托管。
加密同样的内容,每次密文都不一样,是不是有问题?
不是问题,这是正常现象。带随机填充(如 OAEP)的 RSA 加密本身会引入随机数,同一明文每次加密结果不同,但用对应私钥都能正确解密还原。

相关工具

相关教程

← 返回工具箱· 数据均在浏览器本地处理,不上传服务器。