Décodé
Encodé
À propos de Base64
Base64 est un schéma de codage utilisant des caractères ASCII imprimables sur 7 bits. Il est principalement utilisé dans les e-mails pour transférer des données 8 bits sur un chemin de données 7 bits.
Dans Base64, les données sont divisées en groupes de 6 bits et converties en caractères alphanumériques (A-Z, a-z, 0-9) et symboles (+, /). La conversion se fait par blocs de 4 caractères, et si le dernier bloc comporte moins de 4 caractères, il est rempli avec des signes égal (=).
De plus, la RFC 1421 (PEM : Privacy-Enhanced Mail) spécifie un saut de ligne tous les 64 caractères, et la RFC 2045 (MIME) tous les 76 caractères.
Le tableau de conversion en caractères Base64 est le suivant.
| Données 6 bits | Caractère Base64 |
|---|---|
| 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 | / |
Par exemple, la conversion de "Hello" en Base64 donne ce qui suit.
1. Mettre en représentation binaire.
01001000 01100101 01101100 01101100 01101111 (pour US-ASCII / UTF-8)
2. Diviser par 6 bits. S'il y a moins de 6 bits, remplir la fin avec "0".
010010 000110 010101 101100 011011 000110 111100
3. Convertir en caractères à l'aide du tableau de conversion. Convertir tous les 4 caractères, et s'il y a moins de 4 caractères, remplir la fin avec "=".
SGVs bG8=
4. Concaténer tous les caractères pour obtenir le résultat de la conversion Base64.
SGVsbG8=
Format d'en-tête de message MIME pour les e-mails (RFC 2047)
DenCode prend également en charge le décodage des formats d'en-tête de message MIME (RFC 2047) tels que ci-dessous. Ce format est utilisé lorsque l'objet ou le destinataire d'un e-mail contient des caractères non ASCII.
Subject: =?UTF-8?B?44K144Oz44OX44Or?=
Le résultat après décodage est le suivant.
Subject: サンプル
JSON Web Token (RFC 7519)
JSON Web Token (JWT) est un format de jeton qui représente de manière compacte des données JSON en utilisant l'encodage Base64url. Il est largement utilisé pour l'authentification et l'autorisation dans les applications web et est standardisé dans la RFC 7519.
Un JWT est composé de trois éléments séparés par des points (.).
<Header>.<Payload>.<Signature>
Le rôle de chaque élément est le suivant.
| Élément | Description |
|---|---|
| Header | Un objet JSON contenant des métadonnées telles que le type de jeton (typ) et l'algorithme de signature (alg) |
| Payload | Un objet JSON contenant des informations telles que l'identifiant utilisateur et la date d'expiration |
| Signature | Données de signature utilisées pour détecter la falsification de l'en-tête et de la charge utile |
L'en-tête et la charge utile sont chacun encodés en Base64url. Base64url remplace « + » par « - » et « / » par « _ », et omet le remplissage « = » par rapport au Base64 standard (RFC 4648). Cela permet de les inclure en toute sécurité dans les URLs et les en-têtes HTTP.
Par exemple, le décodage du JWT suivant donne l'en-tête et la charge utile au format JSON.
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
{
"alg": "HS256",
"typ": "JWT"
}
{
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
Les principaux champs (claims) contenus dans l'en-tête et la charge utile sont les suivants.
| Champ | Nom | Description |
|---|---|---|
| alg | Algorithm | Algorithme utilisé pour la signature ou le chiffrement (p. ex. HS256, RS256, ES256) |
| typ | Type | Type de jeton (généralement « JWT ») |
| cty | Content Type | Type de contenu de la charge utile (« JWT » pour les JWT imbriqués) |
| kid | Key ID | Identifiant de la clé utilisée pour la vérification de signature |
| jku | JWK Set URL | URL du jeu JWK utilisé pour la vérification de signature |
| x5u | X.509 URL | URL de la chaîne de certificats X.509 utilisée pour la vérification de signature |
| x5t | X.509 Certificate SHA-1 Thumbprint | Empreinte SHA-1 du certificat X.509 utilisé pour la vérification de signature |
| Champ | Nom | Description |
|---|---|---|
| iss | Issuer | Émetteur du jeton |
| sub | Subject | Sujet du jeton (p. ex. identifiant utilisateur) |
| aud | Audience | Destinataire du jeton |
| exp | Expiration Time | Date d'expiration du jeton (horodatage Unix) |
| nbf | Not Before | Date avant laquelle le jeton n'est pas valide (horodatage Unix) |
| iat | Issued At | Date d'émission du jeton (horodatage Unix) |
| jti | JWT ID | Identifiant unique du jeton |