SAMPLE JWT — Algorithm Confusion (HS256 over an RSA Public Key)
The classic algorithm-confusion shape: a token that claims HS256 while its kid points at an RSA key, MACed with that key's public PEM as the shared secret. A verifier that picks its algorithm from the header rather than from the key type accepts it.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Im5vdnVzLXA3LXJzYS0yMDI2In0.eyJpc3MiOiJodHRwczovL2lzc3Vlci5wa2kuc2FtcGxlLmV4YW1wbGUvIiwic3ViIjoidXNlci1zYW1wbGUtMDAwMSIsImF1ZCI6Im5vdnVzLXA3LXNhbXBsZS1hcGkiLCJpYXQiOjE3NjcyMjU2MDAsIm5iZiI6MTc2NzIyNTYwMCwiZXhwIjoyMDgyNzU4NDAwLCJqdGkiOiJub3Z1cy1wNy1zYW1wbGUtMDAwMSIsIm5hbWUiOiJTYW0gUml2ZXJhIChTQU1QTEUpIiwic2NvcGUiOiJyZWFkOnNhbXBsZSJ9.xKbYS1QT4TasugFLT4vioP8Hvjjdl2NdSD8WwqTH2-0
Specifications
- Alg
- HS256
- Kid
- novus-p7-rsa-2026
- Hmac Key
- the RSA public key PEM, used as a shared secret
- Issue
- asymmetric key reused as a symmetric secret
- Valid
- false
- Sub
- user-sample-0001
- Sample Only
- true
- Seed
- 70117
Testing contract
Expected to fail- Scenario
- Verify the token with a verifier configured to accept RS256 for this kid.
- Expected result
- The verifier rejects the token because the header algorithm does not match the resolved key type; only a header-driven verifier accepts it.
What is a .jwt file?
A JWT (JSON Web Token) is a compact, URL-safe token made of three base64url-encoded parts — a header, a payload of claims, and a signature — separated by dots. It is widely used to carry authentication and authorisation claims between services.
How to use this file
Use a sample JWT to test token decoding, claim extraction, and signature verification. Never use an example token's secret in production.
How to use this file for testing
“SAMPLE JWT — Algorithm Confusion (HS256 over an RSA Public Key)” is a deterministic Novus Examples fixture for JWT / JWKS testing, Error handling. Unsigned and SAMPLE-signed JWT variants plus JWKS documents — published sample material only, for auth parser tests.
Documented properties for this file: seed 70117 · intentionally invalid. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
This is published, SAMPLE-only security material — never a real secret. Point certificate, key, or token parsers at it, test PEM/DER decoding and PKCS handling, and confirm your tooling reads the documented fields; any sample password is printed on this page.
These JSON fixtures are synthetic SAMPLE auth or tool-call shapes for harnesses — never production secrets or live tokens. Validate schema fields and alg variants against the documented role.
Code examples
cut -d. -f1 jwt-alg-confusion.jwt | base64 -d; echo
cut -d. -f2 jwt-alg-confusion.jwt | base64 -d; echo # payload claimsRelated files
- jwtJWT — Intentionally Invalid SegmentsIntentionally invalid JWT (truncated) for parser error-path tests.

- jwtJWT (HS256 Expired) — SAMPLESAMPLE HS256 JWT with a past exp claim — for expiry-validation harnesses.

- jsonJWKS (Empty Keys) — SAMPLEEmpty JWKS keys array for edge-case JWKS loaders.

- jsonOAuth Error — Insufficient ScopeOAuth 2.0 SAMPLE error JSON (insufficient_scope) for client error-path tests.

- jsonOAuth Error — Invalid ClientOAuth 2.0 SAMPLE error JSON (invalid_client) for client error-path tests.

- jsonOAuth Error — Invalid GrantOAuth 2.0 SAMPLE error JSON (invalid_grant) for client error-path tests.

Generated by generation/security_p7.py. Free for any use, no attribution required — license.