关于 RSA 加密算法与参数说明
RSA 是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被 ISO 推荐为公钥数据加密标准。
公钥与私钥及格式
- 公钥 (Public Key):可以公开给任何人,通常用于加密数据或验证签名。
- 私钥 (Private Key):必须严格保密,通常用于解密数据或生成签名。
- PKCS#8 格式:现代通用格式(头尾为
BEGIN PUBLIC/PRIVATE KEY),Java、Go、Node.js 等默认推荐使用。 - PKCS#1 格式:传统 OpenSSL RSA 专用格式(头尾为
BEGIN RSA PUBLIC/PRIVATE KEY)。
算法模式与填充模式 (Padding)
- RSA/ECB/PKCS1Padding:最经典、兼容性最广的 RSA 填充方案(PKCS#1 v1.5),每次加密随机填充,相同明文每次加密结果不同。单块最大明文长度为
密钥字节数 - 11(如 2048 位密钥最大 245 字节)。 - RSA/ECB/OAEPWithSHA-*AndMGF1Padding:最优非对称加密填充(PKCS#1 v2.1 OAEP),安全性高于 PKCS1Padding,现代系统(如高版本 TLS、金融接口)推荐使用。单块最大明文长度为
密钥字节数 - 2×哈希字节数 - 2。 - RSA/ECB/NoPadding:无填充原始 RSA 运算(教科书式 RSA),对相同输入产生相同输出,仅用于特殊协议或自定义填充场景。
密钥长度与安全性
RSA 的安全性依赖于大数分解的难度。密钥越长,安全性越高,但计算速度越慢。目前推荐使用 2048位 或 3072/4096位 的密钥长度。512位与1024位的密钥仅建议用于开发调试。