密钥对由 2048~4096 位的模数 n = p·q、公钥指数 e(几乎总是 65537)和私钥指数 d = e⁻¹ mod lcm(p − 1, q − 1) 组成。私钥通常还包含 p、q 以及 CRT 参数 dP、dQ 和 qInv,它们能让签名快约四倍(见 PKCS #1 的 RSAPrivateKey 结构,RFC 8017 附录 A.1.2)。签名时计算编码后消息的 d 次幂模 n;验证时计算签名的 e 次幂,并把结果与预期的编码比较。
原始 RSA 具有延展性且可被伪造,因此填充方案始终是算法的一部分:签名使用 RSASSA-PKCS1-v1_5(确定性,JOSE RS256)或 RSASSA-PSS(随机化,PS256),加密使用 RSAES-OAEP。较早的 PKCS #1 v1.5 加密填充使 Bleichenbacher 填充预言攻击成为可能;TLS 1.3 彻底移除了 RSA 密钥传输。FIPS 186-5 §5.4 要求恰好使用两个素数,且公钥指数为介于 2¹⁶ 和 2²⁵⁶ 之间的奇数。
签名长度等于模数长度:RSA-2048 为 256 字节,RSA-3072 为 384 字节,RSA-4096 为 512 字节。SP 800-57 第 1 部分把 2048 位评定为 112 位安全强度,把 3072 位评定为 128 位。验证开销低,签名则不然:在 Apple M4 Max 的单个核心上使用 OpenSSL 3.6.5,RSA-2048 每秒约可签名 3,000 条消息、验证约 114,000 条消息;生成一个 2048 位密钥平均约需 26 毫秒,且波动很大。
NIST IR 8547(初始公开草案)提议在2030年之后弃用 112 位安全强度的 RSA(2048 位),并在2035年之后禁止使用所有 RSA。与椭圆曲线的比较见 ECDSA 与 RSA。