RSA 加密RSA Encryption
基于浏览器原生 Web Crypto API 的 RSA 在线加密解密,支持 2048 / 4096 位密钥与 RSA-OAEP(SHA-256 / SHA-1)填充,一键生成密钥对(SPKI 公钥 + PKCS#8 私钥 PEM)并实时识别公私钥,与 Java / Go / openssl 互验。加密敏感字段、联调接口加解密、分发授权 License 更快。密钥与明文全程不上传。
工具介绍
3 段详细说明RSA 加密是非对称加密的行业标准:公钥加密、私钥解密。本工具支持 2048 / 4096 位密钥与 RSA-OAEP 填充(SHA-256 / SHA-1),一键生成密钥对并导出 PEM,加密解密全部在浏览器内完成。
所有运算基于浏览器原生 Web Crypto API(generateKey / exportKey / encrypt / decrypt),密钥与明文不上传任何服务器。2048 位密钥生成通常不到 1 秒,4096 位约 1-3 秒,密文 Base64 / Hex 双格式输出。
相比 openssl 命令行,本工具无需安装、可视化操作,PEM 密钥粘贴即用,并会实时识别公钥/私钥类型与位数,适合接口联调、验证密钥配对、生成测试密钥等场景。支持 ⌘+↵ 快捷键执行、结果一键复制。
基础知识 · RSA 原理
RFC 8017 · 6 张卡片RSA 由 Rivest、Shamir、Adleman 于 1977 年提出,安全性建立在大整数因数分解的计算难度上。理解下面 6 个概念,就能覆盖日常 RSA 使用中的绝大部分问题:
key pair公钥 / 私钥配对key size密钥长度1024 位已被攻破退役;2048 位是当前事实标准(安全强度约 112 bit);4096 位更安全但生成与解密都慢数倍。位数越长,单次可加密的明文上限也越大。oaepOAEP 填充pemPEM 密钥格式SPKI(BEGIN PUBLIC KEY),私钥是 PKCS#8(BEGIN PRIVATE KEY)。BEGIN RSA PRIVATE KEY 是 PKCS#1 传统格式,浏览器不认,可用 openssl 转换。block limit单次加密上限190 B;4096 位 → 446 B。这是数学硬限制,不是工具限制,超限时工具会提示。hybrid混合加密AES 加密数据(快、无长度限制),再用 RSA 公钥加密 AES 密钥(慢、但只需加密 32 字节)。TLS、JWT JWE、信封加密都是这个套路。-----BEGIN PUBLIC KEY----- —— SPKI 公钥,用于加密。-----BEGIN PRIVATE KEY----- —— PKCS#8 私钥,用于解密。-----BEGIN RSA PRIVATE KEY----- —— PKCS#1 传统私钥,浏览器不支持,需先转换:openssl pkcs8 -topk8 -nocrypt。使用说明
4 步快速入门使用场景
5 个真实案例后端用 Java / Go 的 RSA-OAEP 私钥解密,把公钥贴进来验证密文能否正确解开,快速对齐填充与摘要参数。
不用敲 openssl 命令,一键生成 2048 / 4096 位测试密钥对,导出 PEM 直接用于本地开发与单元测试。
软件作者用私钥加密授权信息,客户端内置公钥校验;用本工具快速验证公私钥配对关系。
把密码、身份证号等敏感字段用合作方公钥加密后传输,对方私钥解密,中间链路只见密文。
手里有公钥私钥不确定是否一对?公钥加密后用私钥解密,能还原明文即为配对。
常见问题
10 个问答RSA 加密和解密用同一把钥匙吗?
不。RSA 是非对称算法:加密用公钥,解密用私钥。公钥可以公开分发给别人,私钥必须自己保管,两者必须来自同一次生成的密钥对。
我的密钥和明文会上传到服务器吗?
不会。密钥生成、加密、解密全部通过浏览器原生 Web Crypto API 在本机内存完成,输入内容不上传任何服务器。可断网使用,关闭网络后仍能正常工作。
2048 位和 4096 位怎么选?
2048 位是当前事实标准,生成与解密都快、安全性足够;4096 位安全余量更大,但生成慢 5-10 倍、解密慢约 6 倍。新系统用 2048 起步即可,长期高保密需求选 4096。
为什么明文超过 190 字节就加密不了?
RSA 一次只能加密一个「块」,上限 = 位数/8 − 2×摘要长 − 2。RSA-2048 + SHA-256 就是 190 字节,这是算法的数学限制。长文本请用「混合加密」:AES 加密数据 + RSA 公钥加密 AES 密钥。
为什么每次加密同一明文,密文都不一样?
正常现象。OAEP 填充每次加密都引入随机数,同一明文、同一公钥,每次密文都不同,但配对私钥都能正确解开。随机性正是 OAEP 抵抗填充攻击的安全来源。
PKCS#1 v1.5 填充的密文能解吗?
本工具使用更安全的 RSA-OAEP(浏览器原生支持),不支持 PKCS#1 v1.5 加密填充。Java 默认的 RSA/ECB/PKCS1Padding 属于后者,请对方改用 RSA/ECB/OAEPWithSHA-256AndMGF1Padding 参数。
BEGIN RSA PRIVATE KEY 的密钥为什么不能粘贴?
这是 PKCS#1 传统格式,浏览器 Web Crypto 只认 PKCS#8(BEGIN PRIVATE KEY)私钥与 SPKI(BEGIN PUBLIC KEY)公钥。可用一行命令转换:openssl pkcs8 -topk8 -nocrypt -in pkcs1.pem -out pkcs8.pem
生成的私钥以后还能再拿到吗?
不能。私钥只在点击生成时展示一次,刷新或清空后无法找回。请立即复制保存完整 PEM(含 BEGIN / END 行)。私钥丢失只能重新生成密钥对并替换公钥。
SHA-256 和 SHA-1 摘要怎么选?
优先 SHA-256;只有对接老系统(如 Java 默认 OAEPWithSHA-1AndMGF1Padding)时才选 SHA-1。加解密双方的摘要必须一致,否则解密失败。
与 openssl 互验怎么做?
加密:openssl pkeyutl -encrypt -pubin -inkey pub.pem -pkeyopt rsa_oaep_md:sha256 -pkeyopt rsa_mgf1_md:sha256;解密:openssl pkeyutl -decrypt -inkey priv.pem(同样带 -pkeyopt 参数)。摘要与位数对齐即可互通。
相关工具
编码加密分类数据来源
隐私优先Web Crypto API 的 RSA-OAEP 实现,遵循 RFC 8017,无任何第三方依赖。密钥由操作系统级 CSPRNG 生成,导出为 SPKI 公钥与 PKCS#8 私钥 PEM。