Skip to content
ecdsa.com
JOSE, JWK and COSE

JOSE algorithms: alg and enc values for JWS and JWE

JWS and JWE algorithm identifiers of the IANA JOSE registry, from HS256 and ES256 to ML-DSA and HPKE, with their implementation requirements and RFCs.

67 of 67 shown

JOSE algorithms · 67 entries

JWS and JWE algorithm identifiers (alg and enc) with their implementation requirements.

NameDescriptionUsageReferences
A128CBCA128CBC is a JOSE WebCrypto identifier that may appear only in a JWK: AES-CBC without authentication. Implementation requirement: prohibited.JWKW3C Web Cryptography API
A128CBC-HS256A128CBC-HS256 is a JOSE content encryption algorithm (enc in a JWE): AES-CBC with HMAC with SHA-256. Implementation requirement: required.encRFC 7518, Section 5.2.3
A128CTRA128CTR is a JOSE WebCrypto identifier that may appear only in a JWK: AES-CTR without authentication. Implementation requirement: prohibited.JWKW3C Web Cryptography API
A128GCMA128GCM is a JOSE content encryption algorithm (enc in a JWE): AES-GCM. Implementation requirement: recommended.encRFC 7518, Section 5.3
A128GCMKWA128GCMKW is a JOSE key management algorithm (alg in a JWE): AES-GCM key wrap. Implementation requirement: optional.algRFC 7518, Section 4.7
A128KWA128KW is a JOSE key management algorithm (alg in a JWE): AES key wrap. Implementation requirement: recommended.algRFC 7518, Section 4.4
A192CBCA192CBC is a JOSE WebCrypto identifier that may appear only in a JWK: AES-CBC without authentication. Implementation requirement: prohibited.JWKW3C Web Cryptography API
A192CBC-HS384A192CBC-HS384 is a JOSE content encryption algorithm (enc in a JWE): AES-CBC with HMAC with SHA-384. Implementation requirement: optional.encRFC 7518, Section 5.2.4
A192CTRA192CTR is a JOSE WebCrypto identifier that may appear only in a JWK: AES-CTR without authentication. Implementation requirement: prohibited.JWKW3C Web Cryptography API
A192GCMA192GCM is a JOSE content encryption algorithm (enc in a JWE): AES-GCM. Implementation requirement: optional.encRFC 7518, Section 5.3
A192GCMKWA192GCMKW is a JOSE key management algorithm (alg in a JWE): AES-GCM key wrap. Implementation requirement: optional.algRFC 7518, Section 4.7
A192KWA192KW is a JOSE key management algorithm (alg in a JWE): AES key wrap. Implementation requirement: optional.algRFC 7518, Section 4.4
A256CBCA256CBC is a JOSE WebCrypto identifier that may appear only in a JWK: AES-CBC without authentication. Implementation requirement: prohibited.JWKW3C Web Cryptography API
A256CBC-HS512A256CBC-HS512 is a JOSE content encryption algorithm (enc in a JWE): AES-CBC with HMAC with SHA-512. Implementation requirement: required.encRFC 7518, Section 5.2.5
A256CTRA256CTR is a JOSE WebCrypto identifier that may appear only in a JWK: AES-CTR without authentication. Implementation requirement: prohibited.JWKW3C Web Cryptography API
A256GCMA256GCM is a JOSE content encryption algorithm (enc in a JWE): AES-GCM. Implementation requirement: recommended.encRFC 7518, Section 5.3
A256GCMKWA256GCMKW is a JOSE key management algorithm (alg in a JWE): AES-GCM key wrap. Implementation requirement: optional.algRFC 7518, Section 4.7
A256KWA256KW is a JOSE key management algorithm (alg in a JWE): AES key wrap. Implementation requirement: recommended.algRFC 7518, Section 4.4
dirdir is a JOSE key management algorithm (alg in a JWE): direct use of a shared symmetric key. Implementation requirement: recommended.algRFC 7518, Section 4.5
ECDH-ESECDH-ES is a JOSE key management algorithm (alg in a JWE): ephemeral-static ECDH. Implementation requirement: recommended, likely to become required.algRFC 7518, Section 4.6
ECDH-ES+A128KWECDH-ES+A128KW is a JOSE key management algorithm (alg in a JWE): ephemeral-static ECDH followed by AES key wrap. Implementation requirement: recommended.algRFC 7518, Section 4.6
ECDH-ES+A192KWECDH-ES+A192KW is a JOSE key management algorithm (alg in a JWE): ephemeral-static ECDH followed by AES key wrap. Implementation requirement: optional.algRFC 7518, Section 4.6
ECDH-ES+A256KWECDH-ES+A256KW is a JOSE key management algorithm (alg in a JWE): ephemeral-static ECDH followed by AES key wrap. Implementation requirement: recommended.algRFC 7518, Section 4.6
Ed25519Ed25519 is a JOSE signature or MAC algorithm (alg in a JWS): EdDSA on edwards25519. Implementation requirement: optional.edwards25519algRFC 9864, Section 2.2
Ed448Ed448 is a JOSE signature or MAC algorithm (alg in a JWS): EdDSA on edwards448. Implementation requirement: optional.edwards448algRFC 9864, Section 2.2
EdDSANoteEdDSA is a JOSE signature or MAC algorithm (alg in a JWS): EdDSA. Implementation requirement: deprecated.algRFC 9864, Section 2.2
ES256NoteES256 is a JOSE signature or MAC algorithm (alg in a JWS): ECDSA on P-256 with SHA-256. Implementation requirement: recommended, likely to become required.P-256algRFC 7518, Section 3.4
ES256KES256K is a JOSE signature or MAC algorithm (alg in a JWS): ECDSA on secp256k1 with SHA-256. Implementation requirement: optional.secp256k1algRFC 8812, Section 3.2
ES384ES384 is a JOSE signature or MAC algorithm (alg in a JWS): ECDSA on P-384 with SHA-384. Implementation requirement: optional.P-384algRFC 7518, Section 3.4
ES512ES512 is a JOSE signature or MAC algorithm (alg in a JWS): ECDSA on P-521 with SHA-512. Implementation requirement: optional.P-521algRFC 7518, Section 3.4
HPKE-0HPKE-0 is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on P-256. Implementation requirement: optional.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-0-KEHPKE-0-KE is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on P-256. Implementation requirement: optional.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-1HPKE-1 is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on P-384. Implementation requirement: optional.P-384algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-1-KEHPKE-1-KE is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on P-384. Implementation requirement: optional.P-384algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-2HPKE-2 is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on P-521. Implementation requirement: optional.P-521algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-2-KEHPKE-2-KE is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on P-521. Implementation requirement: optional.P-521algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-3HPKE-3 is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on curve25519. Implementation requirement: optional.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-3-KEHPKE-3-KE is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on curve25519. Implementation requirement: optional.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-4HPKE-4 is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on curve25519. Implementation requirement: optional.curve25519algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5HPKE-5 is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on curve448. Implementation requirement: optional.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-5-KEHPKE-5-KE is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on curve448. Implementation requirement: optional.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HPKE-6HPKE-6 is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on curve448. Implementation requirement: optional.curve448algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7HPKE-7 is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on P-256. Implementation requirement: optional.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 5.1
HPKE-7-KEHPKE-7-KE is a JOSE key management algorithm (alg in a JWE): Hybrid Public Key Encryption (HPKE) on P-256. Implementation requirement: optional.P-256algRFC-ietf-jose-hpke-encrypt-22, Section 6.2
HS1HS1 is a JOSE WebCrypto identifier that may appear only in a JWK: HMAC with SHA-1. Implementation requirement: prohibited.JWKW3C Web Cryptography API
HS256NoteHS256 is a JOSE signature or MAC algorithm (alg in a JWS): HMAC with SHA-256. Implementation requirement: required.algRFC 7518, Section 3.2
HS384HS384 is a JOSE signature or MAC algorithm (alg in a JWS): HMAC with SHA-384. Implementation requirement: optional.algRFC 7518, Section 3.2
HS512HS512 is a JOSE signature or MAC algorithm (alg in a JWS): HMAC with SHA-512. Implementation requirement: optional.algRFC 7518, Section 3.2
ML-DSA-44ML-DSA-44 is a JOSE signature or MAC algorithm (alg in a JWS): ML-DSA. Implementation requirement: optional.algRFC 9964
ML-DSA-65NoteML-DSA-65 is a JOSE signature or MAC algorithm (alg in a JWS): ML-DSA. Implementation requirement: optional.algRFC 9964
ML-DSA-87ML-DSA-87 is a JOSE signature or MAC algorithm (alg in a JWS): ML-DSA. Implementation requirement: optional.algRFC 9964
noneNotenone is a JOSE signature or MAC algorithm (alg in a JWS): no signature or MAC at all. Implementation requirement: optional.algRFC 7518, Section 3.6
PBES2-HS256+A128KWPBES2-HS256+A128KW is a JOSE key management algorithm (alg in a JWE): password-based encryption (PBES2) with SHA-256. Implementation requirement: optional.algRFC 7518, Section 4.8
PBES2-HS384+A192KWPBES2-HS384+A192KW is a JOSE key management algorithm (alg in a JWE): password-based encryption (PBES2) with SHA-384. Implementation requirement: optional.algRFC 7518, Section 4.8
PBES2-HS512+A256KWPBES2-HS512+A256KW is a JOSE key management algorithm (alg in a JWE): password-based encryption (PBES2) with SHA-512. Implementation requirement: optional.algRFC 7518, Section 4.8
PS256PS256 is a JOSE signature or MAC algorithm (alg in a JWS): RSASSA-PSS with SHA-256. Implementation requirement: optional.algRFC 7518, Section 3.5
PS384PS384 is a JOSE signature or MAC algorithm (alg in a JWS): RSASSA-PSS with SHA-384. Implementation requirement: optional.algRFC 7518, Section 3.5
PS512PS512 is a JOSE signature or MAC algorithm (alg in a JWS): RSASSA-PSS with SHA-512. Implementation requirement: optional.algRFC 7518, Section 3.5
RS1RS1 is a JOSE WebCrypto identifier that may appear only in a JWK: RSASSA-PKCS1-v1_5 with SHA-1. Implementation requirement: prohibited.JWKW3C Web Cryptography API
RS256NoteRS256 is a JOSE signature or MAC algorithm (alg in a JWS): RSASSA-PKCS1-v1_5 with SHA-256. Implementation requirement: recommended.algRFC 7518, Section 3.3
RS384RS384 is a JOSE signature or MAC algorithm (alg in a JWS): RSASSA-PKCS1-v1_5 with SHA-384. Implementation requirement: optional.algRFC 7518, Section 3.3
RS512RS512 is a JOSE signature or MAC algorithm (alg in a JWS): RSASSA-PKCS1-v1_5 with SHA-512. Implementation requirement: optional.algRFC 7518, Section 3.3
RSA-OAEPRSA-OAEP is a JOSE key management algorithm (alg in a JWE): RSAES-OAEP encryption with SHA-1. Implementation requirement: recommended, likely to become required.algRFC 7518, Section 4.3
RSA-OAEP-256RSA-OAEP-256 is a JOSE key management algorithm (alg in a JWE): RSAES-OAEP encryption with SHA-256. Implementation requirement: optional.algRFC 7518, Section 4.3
RSA-OAEP-384RSA-OAEP-384 is a JOSE key management algorithm (alg in a JWE): RSAES-OAEP encryption with SHA-384. Implementation requirement: optional.algW3C Web Cryptography API
RSA-OAEP-512RSA-OAEP-512 is a JOSE key management algorithm (alg in a JWE): RSAES-OAEP encryption with SHA-512. Implementation requirement: optional.algW3C Web Cryptography API
RSA1_5NoteRSA1_5 is a JOSE key management algorithm (alg in a JWE): RSAES-PKCS1-v1_5 encryption. Implementation requirement: recommended, likely to become optional.algRFC 7518, Section 4.2

Source: JSON Object Signing and Encryption (JOSE) (IANA), retrieved 2026-10-20. Data license: CC0-1.0. JSON Web Signature and Encryption Algorithms

Notes on notable entries

EdDSA

The polymorphic EdDSA identifier of RFC 8037, deprecated by RFC 9864 in favour of Ed25519 and Ed448.

With 'EdDSA' the curve comes from the key (crv: Ed25519 or Ed448), so a party cannot announce which curve it supports. RFC 9864 registers the fully specified names Ed25519 and Ed448 and marks 'EdDSA' Deprecated.

ES256

ECDSA on P-256 with SHA-256, the JWS algorithm most often used for signed JWTs with asymmetric keys.

A JWS signature with ES256 is the 64-byte concatenation of r and s, each padded to 32 bytes (RFC 7518 §3.4), not the DER structure OpenSSL and Java produce; converting between the two is a common source of 'invalid signature' errors — see the DER ⇄ raw converter.

RFC 9864 deprecates the polymorphic COSE identifier ES256 (−7) in favour of the fully specified ESP256 (−9); in JOSE the name ES256 already fixes the curve, so it is unaffected.

HS256

HMAC with SHA-256, a symmetric JWS algorithm: whoever can verify a token can also forge one.

HS256 is the only algorithm RFC 7518 makes required. Because the same secret signs and verifies, it suits a single service that issues and checks its own tokens. A short or guessable secret can be brute-forced offline from any token; RFC 7518 §3.2 requires a key at least as long as the hash output — 256 bits for HS256 — and it must be random.

ML-DSA-65

ML-DSA-65 (FIPS 204) for JWS, registered by RFC 9964 with the new AKP key type.

Post-quantum JWS keys use the Algorithm Key Pair key type (kty 'AKP'), whose 'pub' member holds the raw ML-DSA public key and 'alg' binds it to one parameter set. Signatures are 3,309 bytes, so tokens become several kilobytes long.

none

alg "none" marks an unsecured JWS — a token with no signature at all.

RFC 7518 §3.6 defines 'none' for contexts where integrity is provided by other means. Libraries that let the token's own header choose the algorithm have accepted forged tokens with alg 'none', the best-known JWT vulnerability (RFC 8725 §2.1); verifiers must reject it unless the application explicitly expects unsecured tokens.

RS256

RSASSA-PKCS1-v1_5 with SHA-256, the JWS algorithm of most OpenID Connect ID tokens.

OpenID Connect Core §15.1 requires providers to support signing ID tokens with RS256, which is why most ID tokens and JWKS endpoints use RSA keys. Its classic pitfall is algorithm confusion: a verifier that accepts HS256 for a key meant for RS256 can be tricked into using the public key as an HMAC secret (RFC 8725 §2.1). Pin the expected algorithm per key, as RFC 8725 §3.1 requires.

RSA1_5

RSAES-PKCS1-v1_5 key encryption for JWE, exposed to Bleichenbacher-style padding-oracle attacks.

A server that reveals in any way — error message, timing — whether the padding of a decrypted RSA1_5 key was valid lets an attacker decrypt content keys one query at a time. RFC 7518 marks RSA1_5 'Recommended-', likely to be downgraded; prefer RSA-OAEP-256 or ECDH-ES.

All registries