EdDSA
RFC 8037 的多态 EdDSA 标识符,已被 RFC 9864 弃用,改用 Ed25519 和 Ed448。
使用“EdDSA”时,曲线由密钥决定(crv: Ed25519 或 Ed448),因此一方无法声明自己支持哪条曲线。RFC 9864 注册了完全指定的名称 Ed25519 和 Ed448,并把“EdDSA”标为已弃用(Deprecated)。
显示 67 项中的 67 项
JWS 和 JWE 的算法标识符(alg 和 enc)及其实现要求。
| 名称 | 说明 | 用途 | 参考文献 |
|---|---|---|---|
A128CBC | A128CBC 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CBC。实现要求:禁止。 | JWK | W3C Web Cryptography API |
A128CBC-HS256 | A128CBC-HS256 是 JOSE 内容加密算法(JWE 中的 enc):AES-CBC 加 HMAC,哈希算法为 SHA-256。实现要求:必需。 | enc | RFC 7518, Section 5.2.3 |
A128CTR | A128CTR 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CTR。实现要求:禁止。 | JWK | W3C Web Cryptography API |
A128GCM | A128GCM 是 JOSE 内容加密算法(JWE 中的 enc):AES-GCM。实现要求:推荐。 | enc | RFC 7518, Section 5.3 |
A128GCMKW | A128GCMKW 是 JOSE 密钥管理算法(JWE 中的 alg):AES-GCM 密钥包装。实现要求:可选。 | alg | RFC 7518, Section 4.7 |
A128KW | A128KW 是 JOSE 密钥管理算法(JWE 中的 alg):AES 密钥包装。实现要求:推荐。 | alg | RFC 7518, Section 4.4 |
A192CBC | A192CBC 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CBC。实现要求:禁止。 | JWK | W3C Web Cryptography API |
A192CBC-HS384 | A192CBC-HS384 是 JOSE 内容加密算法(JWE 中的 enc):AES-CBC 加 HMAC,哈希算法为 SHA-384。实现要求:可选。 | enc | RFC 7518, Section 5.2.4 |
A192CTR | A192CTR 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CTR。实现要求:禁止。 | JWK | W3C Web Cryptography API |
A192GCM | A192GCM 是 JOSE 内容加密算法(JWE 中的 enc):AES-GCM。实现要求:可选。 | enc | RFC 7518, Section 5.3 |
A192GCMKW | A192GCMKW 是 JOSE 密钥管理算法(JWE 中的 alg):AES-GCM 密钥包装。实现要求:可选。 | alg | RFC 7518, Section 4.7 |
A192KW | A192KW 是 JOSE 密钥管理算法(JWE 中的 alg):AES 密钥包装。实现要求:可选。 | alg | RFC 7518, Section 4.4 |
A256CBC | A256CBC 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CBC。实现要求:禁止。 | JWK | W3C Web Cryptography API |
A256CBC-HS512 | A256CBC-HS512 是 JOSE 内容加密算法(JWE 中的 enc):AES-CBC 加 HMAC,哈希算法为 SHA-512。实现要求:必需。 | enc | RFC 7518, Section 5.2.5 |
A256CTR | A256CTR 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CTR。实现要求:禁止。 | JWK | W3C Web Cryptography API |
A256GCM | A256GCM 是 JOSE 内容加密算法(JWE 中的 enc):AES-GCM。实现要求:推荐。 | enc | RFC 7518, Section 5.3 |
A256GCMKW | A256GCMKW 是 JOSE 密钥管理算法(JWE 中的 alg):AES-GCM 密钥包装。实现要求:可选。 | alg | RFC 7518, Section 4.7 |
A256KW | A256KW 是 JOSE 密钥管理算法(JWE 中的 alg):AES 密钥包装。实现要求:推荐。 | alg | RFC 7518, Section 4.4 |
dir | dir 是 JOSE 密钥管理算法(JWE 中的 alg):直接使用共享对称密钥。实现要求:推荐。 | alg | RFC 7518, Section 4.5 |
ECDH-ES | ECDH-ES 是 JOSE 密钥管理算法(JWE 中的 alg):临时-静态 ECDH。实现要求:推荐,今后可能成为必需。 | alg | RFC 7518, Section 4.6 |
ECDH-ES+A128KW | ECDH-ES+A128KW 是 JOSE 密钥管理算法(JWE 中的 alg):临时-静态 ECDH 后接 AES 密钥包装。实现要求:推荐。 | alg | RFC 7518, Section 4.6 |
ECDH-ES+A192KW | ECDH-ES+A192KW 是 JOSE 密钥管理算法(JWE 中的 alg):临时-静态 ECDH 后接 AES 密钥包装。实现要求:可选。 | alg | RFC 7518, Section 4.6 |
ECDH-ES+A256KW | ECDH-ES+A256KW 是 JOSE 密钥管理算法(JWE 中的 alg):临时-静态 ECDH 后接 AES 密钥包装。实现要求:推荐。 | alg | RFC 7518, Section 4.6 |
Ed25519 | Ed25519 是 JOSE 签名或 MAC 算法(JWS 中的 alg):EdDSA,曲线为 edwards25519。实现要求:可选。edwards25519 | alg | RFC 9864, Section 2.2 |
Ed448 | Ed448 是 JOSE 签名或 MAC 算法(JWS 中的 alg):EdDSA,曲线为 edwards448。实现要求:可选。edwards448 | alg | RFC 9864, Section 2.2 |
EdDSA说明 | EdDSA 是 JOSE 签名或 MAC 算法(JWS 中的 alg):EdDSA。实现要求:已弃用。 | alg | RFC 9864, Section 2.2 |
ES256说明 | ES256 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ECDSA,曲线为 P-256,哈希算法为 SHA-256。实现要求:推荐,今后可能成为必需。P-256 | alg | RFC 7518, Section 3.4 |
ES256K | ES256K 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ECDSA,曲线为 secp256k1,哈希算法为 SHA-256。实现要求:可选。secp256k1 | alg | RFC 8812, Section 3.2 |
ES384 | ES384 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ECDSA,曲线为 P-384,哈希算法为 SHA-384。实现要求:可选。P-384 | alg | RFC 7518, Section 3.4 |
ES512 | ES512 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ECDSA,曲线为 P-521,哈希算法为 SHA-512。实现要求:可选。P-521 | alg | RFC 7518, Section 3.4 |
HPKE-0 | HPKE-0 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-256。实现要求:可选。P-256 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 5.1 |
HPKE-0-KE | HPKE-0-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-256。实现要求:可选。P-256 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 6.2 |
HPKE-1 | HPKE-1 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-384。实现要求:可选。P-384 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 5.1 |
HPKE-1-KE | HPKE-1-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-384。实现要求:可选。P-384 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 6.2 |
HPKE-2 | HPKE-2 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-521。实现要求:可选。P-521 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 5.1 |
HPKE-2-KE | HPKE-2-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-521。实现要求:可选。P-521 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 6.2 |
HPKE-3 | HPKE-3 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve25519。实现要求:可选。curve25519 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 5.1 |
HPKE-3-KE | HPKE-3-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve25519。实现要求:可选。curve25519 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 6.2 |
HPKE-4 | HPKE-4 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve25519。实现要求:可选。curve25519 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 5.1 |
HPKE-5 | HPKE-5 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve448。实现要求:可选。curve448 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 5.1 |
HPKE-5-KE | HPKE-5-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve448。实现要求:可选。curve448 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 6.2 |
HPKE-6 | HPKE-6 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve448。实现要求:可选。curve448 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 5.1 |
HPKE-7 | HPKE-7 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-256。实现要求:可选。P-256 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 5.1 |
HPKE-7-KE | HPKE-7-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-256。实现要求:可选。P-256 | alg | RFC-ietf-jose-hpke-encrypt-22, Section 6.2 |
HS1 | HS1 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:HMAC,哈希算法为 SHA-1。实现要求:禁止。 | JWK | W3C Web Cryptography API |
HS256说明 | HS256 是 JOSE 签名或 MAC 算法(JWS 中的 alg):HMAC,哈希算法为 SHA-256。实现要求:必需。 | alg | RFC 7518, Section 3.2 |
HS384 | HS384 是 JOSE 签名或 MAC 算法(JWS 中的 alg):HMAC,哈希算法为 SHA-384。实现要求:可选。 | alg | RFC 7518, Section 3.2 |
HS512 | HS512 是 JOSE 签名或 MAC 算法(JWS 中的 alg):HMAC,哈希算法为 SHA-512。实现要求:可选。 | alg | RFC 7518, Section 3.2 |
ML-DSA-44 | ML-DSA-44 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ML-DSA。实现要求:可选。 | alg | RFC 9964 |
ML-DSA-65说明 | ML-DSA-65 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ML-DSA。实现要求:可选。 | alg | RFC 9964 |
ML-DSA-87 | ML-DSA-87 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ML-DSA。实现要求:可选。 | alg | RFC 9964 |
none说明 | none 是 JOSE 签名或 MAC 算法(JWS 中的 alg):完全没有签名或 MAC。实现要求:可选。 | alg | RFC 7518, Section 3.6 |
PBES2-HS256+A128KW | PBES2-HS256+A128KW 是 JOSE 密钥管理算法(JWE 中的 alg):基于口令的加密(PBES2),哈希算法为 SHA-256。实现要求:可选。 | alg | RFC 7518, Section 4.8 |
PBES2-HS384+A192KW | PBES2-HS384+A192KW 是 JOSE 密钥管理算法(JWE 中的 alg):基于口令的加密(PBES2),哈希算法为 SHA-384。实现要求:可选。 | alg | RFC 7518, Section 4.8 |
PBES2-HS512+A256KW | PBES2-HS512+A256KW 是 JOSE 密钥管理算法(JWE 中的 alg):基于口令的加密(PBES2),哈希算法为 SHA-512。实现要求:可选。 | alg | RFC 7518, Section 4.8 |
PS256 | PS256 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PSS,哈希算法为 SHA-256。实现要求:可选。 | alg | RFC 7518, Section 3.5 |
PS384 | PS384 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PSS,哈希算法为 SHA-384。实现要求:可选。 | alg | RFC 7518, Section 3.5 |
PS512 | PS512 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PSS,哈希算法为 SHA-512。实现要求:可选。 | alg | RFC 7518, Section 3.5 |
RS1 | RS1 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:RSASSA-PKCS1-v1_5,哈希算法为 SHA-1。实现要求:禁止。 | JWK | W3C Web Cryptography API |
RS256说明 | RS256 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PKCS1-v1_5,哈希算法为 SHA-256。实现要求:推荐。 | alg | RFC 7518, Section 3.3 |
RS384 | RS384 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PKCS1-v1_5,哈希算法为 SHA-384。实现要求:可选。 | alg | RFC 7518, Section 3.3 |
RS512 | RS512 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PKCS1-v1_5,哈希算法为 SHA-512。实现要求:可选。 | alg | RFC 7518, Section 3.3 |
RSA-OAEP | RSA-OAEP 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-OAEP 加密,哈希算法为 SHA-1。实现要求:推荐,今后可能成为必需。 | alg | RFC 7518, Section 4.3 |
RSA-OAEP-256 | RSA-OAEP-256 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-OAEP 加密,哈希算法为 SHA-256。实现要求:可选。 | alg | RFC 7518, Section 4.3 |
RSA-OAEP-384 | RSA-OAEP-384 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-OAEP 加密,哈希算法为 SHA-384。实现要求:可选。 | alg | W3C Web Cryptography API |
RSA-OAEP-512 | RSA-OAEP-512 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-OAEP 加密,哈希算法为 SHA-512。实现要求:可选。 | alg | W3C Web Cryptography API |
RSA1_5说明 | RSA1_5 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-PKCS1-v1_5 加密。实现要求:推荐,今后可能降为可选。 | alg | RFC 7518, Section 4.2 |
来源:JSON Object Signing and Encryption (JOSE)(IANA),获取于 2026-10-20。数据许可证:CC0-1.0。 JSON Web Signature and Encryption Algorithms
RFC 8037 的多态 EdDSA 标识符,已被 RFC 9864 弃用,改用 Ed25519 和 Ed448。
使用“EdDSA”时,曲线由密钥决定(crv: Ed25519 或 Ed448),因此一方无法声明自己支持哪条曲线。RFC 9864 注册了完全指定的名称 Ed25519 和 Ed448,并把“EdDSA”标为已弃用(Deprecated)。
基于 P-256 和 SHA-256 的 ECDSA,用非对称密钥签名 JWT 时最常用的 JWS 算法。
使用 ES256 的 JWS 签名由 r 和 s 各填充到 32 字节后拼接而成,共 64 字节(RFC 7518 §3.4),而不是 OpenSSL 和 Java 生成的 DER 结构;两者之间的转换是“invalid signature”错误的常见来源——参见 DER ⇄ 原始格式转换器。
RFC 9864 弃用了多态的 COSE 标识符 ES256(−7),改用完全指定的 ESP256(−9);在 JOSE 中,ES256 这个名称本身已经固定了曲线,因此不受影响。
使用 SHA-256 的 HMAC,一种对称的 JWS 算法:能验证令牌的一方也能伪造令牌。
HS256 是 RFC 7518 中唯一规定为必须实现的算法。由于签名和验证使用同一个密钥,它适合自己签发并检查令牌的单个服务。只要拿到任意一个令牌,就能离线暴力破解过短或可猜测的密钥;RFC 7518 §3.2 要求密钥长度至少等于哈希输出长度——HS256 为 256 位——而且密钥必须是随机的。
用于 JWS 的 ML-DSA-65(FIPS 204),由 RFC 9964 连同新的 AKP 密钥类型一起注册。
后量子 JWS 密钥使用 kty 为“AKP”的算法密钥对(Algorithm Key Pair)密钥类型,其“pub”成员保存原始的 ML-DSA 公钥,“alg”则把它绑定到某一个参数集。签名为 3,309 字节,因此令牌会长达数 KB。
alg 值“none”表示未受保护的 JWS——完全没有签名的令牌。
RFC 7518 §3.6 为通过其他方式提供完整性的场景定义了“none”。让令牌自己的头部选择算法的库,曾接受过 alg 为“none”的伪造令牌,这是最著名的 JWT 漏洞(RFC 8725 §2.1);除非应用明确预期接收未受保护的令牌,否则验证者必须拒绝它。
使用 SHA-256 的 RSASSA-PKCS1-v1_5,大多数 OpenID Connect ID 令牌所用的 JWS 算法。
OpenID Connect Core §15.1 要求提供方支持用 RS256 签名 ID 令牌,因此大多数 ID 令牌和 JWKS 端点都使用 RSA 密钥。它的典型陷阱是算法混淆:如果验证者对本应用于 RS256 的密钥也接受 HS256,就可能被诱导把公钥当作 HMAC 密钥使用(RFC 8725 §2.1)。应按照 RFC 8725 §3.1 的要求,为每个密钥固定预期的算法。
JWE 中使用 RSAES-PKCS1-v1_5 的密钥加密,容易受到 Bleichenbacher 式填充预言攻击。
如果服务器以任何方式(错误信息、响应时间)透露解密后的 RSA1_5 密钥的填充是否有效,攻击者就能通过一次次查询解密出内容密钥。RFC 7518 把 RSA1_5 标为“Recommended-”,即很可能被降级;应优先使用 RSA-OAEP-256 或 ECDH-ES。