RSA(由 Rivest, Shamir, Adleman 三人姓氏命名)是目前全球应用最广泛的非对称加密算法。与 AES 等对称加密不同,RSA 拥有一对密钥:公钥(Public Key)**和**私钥(Private Key)。
本工具支持 RSA 的两种核心使用模式:
在使用 RSA 工具时,请务必关注您的密钥格式,这通常是导致报错的主要原因:
| 参数项 | 说明 | 常见标准 |
|---|---|---|
| 密钥格式 | PKCS#1 vs PKCS#8 | PKCS#1 仅支持 RSA;PKCS#8 是通用格式。Java 通常使用 PKCS#8。 |
| 密钥长度 | 1024 / 2048 / 4096 bit | 1024 位已不推荐;2048 位为当前主流;4096 位安全性最高但性能消耗大。 |
| 填充模式 | PKCS1Padding / OAEP | 必须确保加解密双方使用的填充模式完全一致。 |
Q:为什么 RSA 不能加密很长的文本?
A: RSA 的加密长度受密钥位数限制。2048 位密钥配合 PKCS#1 填充,一次最多只能加密 245 字节的数据。如果需要处理长文本,通常的做法是:用 [AES 工具] 加密内容,再用 RSA 加密 AES 的密钥(这种方式称为“混合加密”)。
Q:PKCS#1 和 PKCS#8 格式如何区分?
A: 查看密钥的开头文字:
-----BEGIN RSA PRIVATE KEY----------BEGIN PRIVATE KEY----- (没有 RSA 字样)Q:RSA 公钥加密后的结果是唯一的吗?
A: 不是。由于 Padding(填充)机制的存在,每次点击加密生成的密文都会变化,但它们都能通过对应的私钥解密出相同的明文。这是一种安全保护机制。
更多RSA基础知识: RSA 深度解析:原理、数学基础、编码与安全性