跳到主要内容
ecdsa.com
JOSE、JWK 与 COSE

JOSE 算法:JWS 与 JWE 的 alg 和 enc 值

本页收录 IANA JOSE 注册表中 JWS 和 JWE 的算法标识符(alg 与 enc),从 HS256、ES256 到 ML-DSA 和 HPKE,并附每个算法的实现要求及定义它的 RFC。

显示 67 项中的 67 项

JOSE 算法 · 67 个条目

JWS 和 JWE 的算法标识符(alg 和 enc)及其实现要求。

名称说明用途参考文献
A128CBCA128CBC 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CBC。实现要求:禁止。JWKW3C Web Cryptography API
A128CBC-HS256A128CBC-HS256 是 JOSE 内容加密算法(JWE 中的 enc):AES-CBC 加 HMAC,哈希算法为 SHA-256。实现要求:必需。encRFC 7518, Section 5.2.3
A128CTRA128CTR 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CTR。实现要求:禁止。JWKW3C Web Cryptography API
A128GCMA128GCM 是 JOSE 内容加密算法(JWE 中的 enc):AES-GCM。实现要求:推荐。encRFC 7518, Section 5.3
A128GCMKWA128GCMKW 是 JOSE 密钥管理算法(JWE 中的 alg):AES-GCM 密钥包装。实现要求:可选。algRFC 7518, Section 4.7
A128KWA128KW 是 JOSE 密钥管理算法(JWE 中的 alg):AES 密钥包装。实现要求:推荐。algRFC 7518, Section 4.4
A192CBCA192CBC 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CBC。实现要求:禁止。JWKW3C Web Cryptography API
A192CBC-HS384A192CBC-HS384 是 JOSE 内容加密算法(JWE 中的 enc):AES-CBC 加 HMAC,哈希算法为 SHA-384。实现要求:可选。encRFC 7518, Section 5.2.4
A192CTRA192CTR 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CTR。实现要求:禁止。JWKW3C Web Cryptography API
A192GCMA192GCM 是 JOSE 内容加密算法(JWE 中的 enc):AES-GCM。实现要求:可选。encRFC 7518, Section 5.3
A192GCMKWA192GCMKW 是 JOSE 密钥管理算法(JWE 中的 alg):AES-GCM 密钥包装。实现要求:可选。algRFC 7518, Section 4.7
A192KWA192KW 是 JOSE 密钥管理算法(JWE 中的 alg):AES 密钥包装。实现要求:可选。algRFC 7518, Section 4.4
A256CBCA256CBC 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CBC。实现要求:禁止。JWKW3C Web Cryptography API
A256CBC-HS512A256CBC-HS512 是 JOSE 内容加密算法(JWE 中的 enc):AES-CBC 加 HMAC,哈希算法为 SHA-512。实现要求:必需。encRFC 7518, Section 5.2.5
A256CTRA256CTR 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:不带认证的 AES-CTR。实现要求:禁止。JWKW3C Web Cryptography API
A256GCMA256GCM 是 JOSE 内容加密算法(JWE 中的 enc):AES-GCM。实现要求:推荐。encRFC 7518, Section 5.3
A256GCMKWA256GCMKW 是 JOSE 密钥管理算法(JWE 中的 alg):AES-GCM 密钥包装。实现要求:可选。algRFC 7518, Section 4.7
A256KWA256KW 是 JOSE 密钥管理算法(JWE 中的 alg):AES 密钥包装。实现要求:推荐。algRFC 7518, Section 4.4
dirdir 是 JOSE 密钥管理算法(JWE 中的 alg):直接使用共享对称密钥。实现要求:推荐。algRFC 7518, Section 4.5
ECDH-ESECDH-ES 是 JOSE 密钥管理算法(JWE 中的 alg):临时-静态 ECDH。实现要求:推荐,今后可能成为必需。algRFC 7518, Section 4.6
ECDH-ES+A128KWECDH-ES+A128KW 是 JOSE 密钥管理算法(JWE 中的 alg):临时-静态 ECDH 后接 AES 密钥包装。实现要求:推荐。algRFC 7518, Section 4.6
ECDH-ES+A192KWECDH-ES+A192KW 是 JOSE 密钥管理算法(JWE 中的 alg):临时-静态 ECDH 后接 AES 密钥包装。实现要求:可选。algRFC 7518, Section 4.6
ECDH-ES+A256KWECDH-ES+A256KW 是 JOSE 密钥管理算法(JWE 中的 alg):临时-静态 ECDH 后接 AES 密钥包装。实现要求:推荐。algRFC 7518, Section 4.6
Ed25519Ed25519 是 JOSE 签名或 MAC 算法(JWS 中的 alg):EdDSA,曲线为 edwards25519。实现要求:可选。edwards25519algRFC 9864, Section 2.2
Ed448Ed448 是 JOSE 签名或 MAC 算法(JWS 中的 alg):EdDSA,曲线为 edwards448。实现要求:可选。edwards448algRFC 9864, Section 2.2
EdDSA说明EdDSA 是 JOSE 签名或 MAC 算法(JWS 中的 alg):EdDSA。实现要求:已弃用。algRFC 9864, Section 2.2
ES256说明ES256 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ECDSA,曲线为 P-256,哈希算法为 SHA-256。实现要求:推荐,今后可能成为必需。P-256algRFC 7518, Section 3.4
ES256KES256K 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ECDSA,曲线为 secp256k1,哈希算法为 SHA-256。实现要求:可选。secp256k1algRFC 8812, Section 3.2
ES384ES384 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ECDSA,曲线为 P-384,哈希算法为 SHA-384。实现要求:可选。P-384algRFC 7518, Section 3.4
ES512ES512 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ECDSA,曲线为 P-521,哈希算法为 SHA-512。实现要求:可选。P-521algRFC 7518, Section 3.4
HPKE-0HPKE-0 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-256。实现要求:可选。P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-0-KEHPKE-0-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-256。实现要求:可选。P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-1HPKE-1 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-384。实现要求:可选。P-384algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-1-KEHPKE-1-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-384。实现要求:可选。P-384algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-2HPKE-2 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-521。实现要求:可选。P-521algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-2-KEHPKE-2-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-521。实现要求:可选。P-521algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-3HPKE-3 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve25519。实现要求:可选。curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-3-KEHPKE-3-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve25519。实现要求:可选。curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-4HPKE-4 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve25519。实现要求:可选。curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5HPKE-5 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve448。实现要求:可选。curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5-KEHPKE-5-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve448。实现要求:可选。curve448algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-6HPKE-6 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 curve448。实现要求:可选。curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7HPKE-7 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-256。实现要求:可选。P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7-KEHPKE-7-KE 是 JOSE 密钥管理算法(JWE 中的 alg):混合公钥加密(HPKE),曲线为 P-256。实现要求:可选。P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HS1HS1 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:HMAC,哈希算法为 SHA-1。实现要求:禁止。JWKW3C Web Cryptography API
HS256说明HS256 是 JOSE 签名或 MAC 算法(JWS 中的 alg):HMAC,哈希算法为 SHA-256。实现要求:必需。algRFC 7518, Section 3.2
HS384HS384 是 JOSE 签名或 MAC 算法(JWS 中的 alg):HMAC,哈希算法为 SHA-384。实现要求:可选。algRFC 7518, Section 3.2
HS512HS512 是 JOSE 签名或 MAC 算法(JWS 中的 alg):HMAC,哈希算法为 SHA-512。实现要求:可选。algRFC 7518, Section 3.2
ML-DSA-44ML-DSA-44 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ML-DSA。实现要求:可选。algRFC 9964
ML-DSA-65说明ML-DSA-65 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ML-DSA。实现要求:可选。algRFC 9964
ML-DSA-87ML-DSA-87 是 JOSE 签名或 MAC 算法(JWS 中的 alg):ML-DSA。实现要求:可选。algRFC 9964
none说明none 是 JOSE 签名或 MAC 算法(JWS 中的 alg):完全没有签名或 MAC。实现要求:可选。algRFC 7518, Section 3.6
PBES2-HS256+A128KWPBES2-HS256+A128KW 是 JOSE 密钥管理算法(JWE 中的 alg):基于口令的加密(PBES2),哈希算法为 SHA-256。实现要求:可选。algRFC 7518, Section 4.8
PBES2-HS384+A192KWPBES2-HS384+A192KW 是 JOSE 密钥管理算法(JWE 中的 alg):基于口令的加密(PBES2),哈希算法为 SHA-384。实现要求:可选。algRFC 7518, Section 4.8
PBES2-HS512+A256KWPBES2-HS512+A256KW 是 JOSE 密钥管理算法(JWE 中的 alg):基于口令的加密(PBES2),哈希算法为 SHA-512。实现要求:可选。algRFC 7518, Section 4.8
PS256PS256 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PSS,哈希算法为 SHA-256。实现要求:可选。algRFC 7518, Section 3.5
PS384PS384 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PSS,哈希算法为 SHA-384。实现要求:可选。algRFC 7518, Section 3.5
PS512PS512 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PSS,哈希算法为 SHA-512。实现要求:可选。algRFC 7518, Section 3.5
RS1RS1 是 JOSE WebCrypto 标识符,只能出现在 JWK 中:RSASSA-PKCS1-v1_5,哈希算法为 SHA-1。实现要求:禁止。JWKW3C Web Cryptography API
RS256说明RS256 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PKCS1-v1_5,哈希算法为 SHA-256。实现要求:推荐。algRFC 7518, Section 3.3
RS384RS384 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PKCS1-v1_5,哈希算法为 SHA-384。实现要求:可选。algRFC 7518, Section 3.3
RS512RS512 是 JOSE 签名或 MAC 算法(JWS 中的 alg):RSASSA-PKCS1-v1_5,哈希算法为 SHA-512。实现要求:可选。algRFC 7518, Section 3.3
RSA-OAEPRSA-OAEP 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-OAEP 加密,哈希算法为 SHA-1。实现要求:推荐,今后可能成为必需。algRFC 7518, Section 4.3
RSA-OAEP-256RSA-OAEP-256 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-OAEP 加密,哈希算法为 SHA-256。实现要求:可选。algRFC 7518, Section 4.3
RSA-OAEP-384RSA-OAEP-384 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-OAEP 加密,哈希算法为 SHA-384。实现要求:可选。algW3C Web Cryptography API
RSA-OAEP-512RSA-OAEP-512 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-OAEP 加密,哈希算法为 SHA-512。实现要求:可选。algW3C Web Cryptography API
RSA1_5说明RSA1_5 是 JOSE 密钥管理算法(JWE 中的 alg):RSAES-PKCS1-v1_5 加密。实现要求:推荐,今后可能降为可选。algRFC 7518, Section 4.2

来源:JSON Object Signing and Encryption (JOSE)(IANA),获取于 2026-10-20。数据许可证:CC0-1.0。 JSON Web Signature and Encryption Algorithms

重要条目说明

EdDSA

RFC 8037 的多态 EdDSA 标识符,已被 RFC 9864 弃用,改用 Ed25519 和 Ed448。

使用“EdDSA”时,曲线由密钥决定(crv: Ed25519 或 Ed448),因此一方无法声明自己支持哪条曲线。RFC 9864 注册了完全指定的名称 Ed25519 和 Ed448,并把“EdDSA”标为已弃用(Deprecated)。

ES256

基于 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 这个名称本身已经固定了曲线,因此不受影响。

HS256

使用 SHA-256 的 HMAC,一种对称的 JWS 算法:能验证令牌的一方也能伪造令牌。

HS256 是 RFC 7518 中唯一规定为必须实现的算法。由于签名和验证使用同一个密钥,它适合自己签发并检查令牌的单个服务。只要拿到任意一个令牌,就能离线暴力破解过短或可猜测的密钥;RFC 7518 §3.2 要求密钥长度至少等于哈希输出长度——HS256 为 256 位——而且密钥必须是随机的。

ML-DSA-65

用于 JWS 的 ML-DSA-65(FIPS 204),由 RFC 9964 连同新的 AKP 密钥类型一起注册。

后量子 JWS 密钥使用 kty 为“AKP”的算法密钥对(Algorithm Key Pair)密钥类型,其“pub”成员保存原始的 ML-DSA 公钥,“alg”则把它绑定到某一个参数集。签名为 3,309 字节,因此令牌会长达数 KB。

none

alg 值“none”表示未受保护的 JWS——完全没有签名的令牌。

RFC 7518 §3.6 为通过其他方式提供完整性的场景定义了“none”。让令牌自己的头部选择算法的库,曾接受过 alg 为“none”的伪造令牌,这是最著名的 JWT 漏洞(RFC 8725 §2.1);除非应用明确预期接收未受保护的令牌,否则验证者必须拒绝它。

RS256

使用 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 的要求,为每个密钥固定预期的算法。

RSA1_5

JWE 中使用 RSAES-PKCS1-v1_5 的密钥加密,容易受到 Bleichenbacher 式填充预言攻击。

如果服务器以任何方式(错误信息、响应时间)透露解密后的 RSA1_5 密钥的填充是否有效,攻击者就能通过一次次查询解密出内容密钥。RFC 7518 把 RSA1_5 标为“Recommended-”,即很可能被降级;应优先使用 RSA-OAEP-256 或 ECDH-ES。

全部注册表