Gedecodeerd
Gecodeerd
Over Base64
Base64 is een coderingsmethode die gebruikmaakt van 7-bit ASCII-tekens. Het wordt voornamelijk gebruikt in e-mail om 8-bit gegevens over te dragen via een 7-bit gegevenspad.
In Base64 worden gegevens in groepen van 6 bits verdeeld en weergegeven door ze om te zetten in alfanumerieke tekens (A-Z, a-z, 0-9) en symbolen (+, /). Conversie vindt plaats per 4 tekens, en als het einde minder dan 4 tekens is, wordt dit aangevuld met het is-gelijk-teken (=).
Bovendien specificeert RFC 1421 (PEM: Privacy-Enhanced Mail) een regeleinde elke 64 tekens, en RFC 2045 (MIME) elke 76 tekens.
De conversietabel naar Base64-tekens is als volgt.
| 6-bits data | Base64-teken |
|---|---|
| 000000 | A |
| 000001 | B |
| 000010 | C |
| 000011 | D |
| 000100 | E |
| 000101 | F |
| 000110 | G |
| 000111 | H |
| 001000 | I |
| 001001 | J |
| 001010 | K |
| 001011 | L |
| 001100 | M |
| 001101 | N |
| 001110 | O |
| 001111 | P |
| 010000 | Q |
| 010001 | R |
| 010010 | S |
| 010011 | T |
| 010100 | U |
| 010101 | V |
| 010110 | W |
| 010111 | X |
| 011000 | Y |
| 011001 | Z |
| 011010 | a |
| 011011 | b |
| 011100 | c |
| 011101 | d |
| 011110 | e |
| 011111 | f |
| 100000 | g |
| 100001 | h |
| 100010 | i |
| 100011 | j |
| 100100 | k |
| 100101 | l |
| 100110 | m |
| 100111 | n |
| 101000 | o |
| 101001 | p |
| 101010 | q |
| 101011 | r |
| 101100 | s |
| 101101 | t |
| 101110 | u |
| 101111 | v |
| 110000 | w |
| 110001 | x |
| 110010 | y |
| 110011 | z |
| 110100 | 0 |
| 110101 | 1 |
| 110110 | 2 |
| 110111 | 3 |
| 111000 | 4 |
| 111001 | 5 |
| 111010 | 6 |
| 111011 | 7 |
| 111100 | 8 |
| 111101 | 9 |
| 111110 | + |
| 111111 | / |
Bijvoorbeeld, het resultaat van het converteren van "Hello" met Base64 is als volgt:
1. Converteer naar binaire weergave.
01001000 01100101 01101100 01101100 01101111 (In het geval van US-ASCII / UTF-8)
2. Verdeel in groepen van 6 bits. Als de laatste groep minder dan 6 bits is, vul dan aan met "0".
010010 000110 010101 101100 011011 000110 111100
3. Converteer naar tekens met behulp van de conversietabel. Converteer elke 4 tekens, en vul aan met "=" als het minder dan 4 tekens is.
SGVs bG8=
4. Verbind alle tekens om het resultaat van de Base64-conversie te vormen.
SGVsbG8=
MIME-berichtenkoptekstformaat (RFC 2047) voor e-mail
DenCode ondersteunt ook het decoderen van het volgende MIME-berichtenkoptekstformaat (RFC 2047). Dit formaat wordt gebruikt wanneer het onderwerp of het adres van een e-mail niet-ASCII-tekens bevat.
Subject: =?UTF-8?B?44K144Oz44OX44Or?=
Het resultaat na decodering is als volgt:
Subject: サンプル
JSON Web Token (RFC 7519)
JSON Web Token (JWT) is een tokenformaat dat JSON-gegevens compact weergeeft met behulp van Base64url-codering. Het wordt veel gebruikt voor authenticatie en autorisatie in webapplicaties en is gestandaardiseerd in RFC 7519.
Een JWT bestaat uit drie elementen gescheiden door punten (.).
<Header>.<Payload>.<Signature>
De rol van elk element is als volgt.
| Element | Beschrijving |
|---|---|
| Header | Een JSON-object met metadata zoals het tokentype (typ) en het ondertekeningsalgoritme (alg) |
| Payload | Een JSON-object met informatie zoals gebruikers-ID en verloopdatum |
| Signature | Handtekeninggegevens die worden gebruikt om manipulatie van de header en payload te detecteren |
De header en payload zijn elk Base64url-gecodeerd. Base64url vervangt "+" door "-" en "/" door "_", en laat de opvulling "=" weg in vergelijking met standaard Base64 (RFC 4648). Hierdoor kunnen ze veilig worden opgenomen in URL's en HTTP-headers.
Het decoderen van de volgende JWT levert bijvoorbeeld de header en payload op als JSON.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
De belangrijkste velden (claims) in de header en payload zijn als volgt.
| Veld | Naam | Beschrijving |
|---|---|---|
| alg | Algorithm | Algoritme dat wordt gebruikt voor ondertekening of versleuteling (bijv. HS256, RS256, ES256) |
| typ | Type | Tokentype (meestal "JWT") |
| cty | Content Type | Inhoudstype van de payload ("JWT" voor geneste JWT's) |
| kid | Key ID | Identificatie van de sleutel die wordt gebruikt voor handtekeningverificatie |
| jku | JWK Set URL | URL van de JWK Set die wordt gebruikt voor handtekeningverificatie |
| x5u | X.509 URL | URL van de X.509-certificaatketen die wordt gebruikt voor handtekeningverificatie |
| x5t | X.509 Certificate SHA-1 Thumbprint | SHA-1-vingerafdruk van het X.509-certificaat dat wordt gebruikt voor handtekeningverificatie |
| Veld | Naam | Beschrijving |
|---|---|---|
| iss | Issuer | Uitgever van het token |
| sub | Subject | Onderwerp van het token (bijv. gebruikers-ID) |
| aud | Audience | Ontvanger van het token |
| exp | Expiration Time | Vervaltijd van het token (Unix-tijdstempel) |
| nbf | Not Before | Tijdstip waarvoor het token niet geldig is (Unix-tijdstempel) |
| iat | Issued At | Tijdstip van uitgifte van het token (Unix-tijdstempel) |
| jti | JWT ID | Unieke identificatie van het token |