RFC 4648 - Encodages de données Base16, Base32 et Base64
Publié: Octobre 2006
Statut: Protocole de suivi des normes (Standards Track)
Auteur: S. Josefsson (SJD)
Rend obsolète: RFC 3548
Résumé (Abstract)
Ce document décrit les schémas d'encodage Base64, Base32 et Base16 couramment utilisés. Il discute également de l'utilisation des sauts de ligne dans les données encodées, de l'utilisation du remplissage dans les données encodées, de l'utilisation de caractères non alphabétiques dans les données encodées, de l'utilisation de différents alphabets d'encodage et des encodages canoniques.
Statut de ce mémorandum (Status of This Memo)
Ce document spécifie un protocole de suivi des normes Internet pour la communauté Internet et demande des discussions et des suggestions pour des améliorations. Veuillez vous référer à l'édition actuelle des "Internet Official Protocol Standards" (STD 1) pour connaître l'état de standardisation et le statut de ce protocole. La distribution de ce mémorandum est illimitée.
Avis de droit d'auteur (Copyright Notice)
Copyright (C) The Internet Society (2006).
Table des matières (Contents)
Sections principales
- 1. Introduction
- 2. Conventions utilisées dans ce document
- 3. Différences d'implémentation
- 3.1 Sauts de ligne dans les données encodées
- 3.2 Remplissage des données encodées
- 3.3 Interprétation des caractères non alphabétiques dans les données encodées
- 3.4 Choix de l'alphabet
- 3.5 Encodage canonique
- 4. Encodage Base 64
- 5. Encodage Base 64 avec alphabet sécurisé pour URL et noms de fichiers
- 6. Encodage Base 32
- 7. Encodage Base 32 avec alphabet hexadécimal étendu
- 8. Encodage Base 16
- 9. Illustrations et exemples
- 10. Vecteurs de test
- 11. Implémentation ISO C99 de Base64
- 12. Considérations de sécurité
- 13. Changements depuis RFC 3548
- 14. Remerciements
- 15. Conditions de copie
- 16. Références
- 16.1 Références normatives
- 16.2 Références informatives
Pourquoi l'encodage Base est important
L'encodage Base est fondamental pour la transmission de données sur Internet. Il convertit les données binaires en format texte, permettant la transmission et le stockage dans des environnements texte uniquement.
Cas d'utilisation principaux
| Encodage | Objectif principal | Applications typiques |
|---|---|---|
| Base64 | Encodage binaire général | Pièces jointes MIME, jetons JWT, URI de données |
| Base64URL | Encodage sécurisé pour URL | JWT, jetons OAuth, paramètres d'URL |
| Base32 | Encodage lisible par l'homme | Clés TOTP, encodage Crockford |
| Base16 | Encodage hexadécimal | Affichage de hachages, sortie de débogage |
Référence rapide Base64
Encodage Base64 standard
Jeu de caractères : A-Z, a-z, 0-9, +, /
Caractère de remplissage : =
Longueur de sortie : Nombre d'octets d'entrée × 4/3 (arrondi au multiple de 4)
Exemple :
Entrée : "Hello"
Sortie : "SGVsbG8="
Processus d'encodage :
H e l l o
01001000 01100101 01101100 01101100 01101111
↓ Grouper par 6 bits
010010 000110 010101 101100 011011 000110 1111
↓ Consulter la table
S G V s b G 8=
Encodage Base64URL (RFC 4648 §5)
Jeu de caractères : A-Z, a-z, 0-9, -, _
Caractère de remplissage : = (généralement omis)
Différences avec Base64 standard :
+ → -
/ → _
Usage : JWT, jetons OAuth, paramètres d'URL
Tables de référence d'encodage Base
Table de caractères Base64 standard
Val Car Val Car Val Car Val Car
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /
Caractère de remplissage : =
Applications dans le monde réel
JWT (JSON Web Token)
Structure JWT :
header.payload.signature
Chaque partie est encodée en Base64URL :
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIn0.
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
URI de données
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA..." />
Pièces jointes d'e-mail MIME
Content-Type: application/pdf
Content-Transfer-Encoding: base64
JVBERi0xLjQKJeLjz9MKMSAwIG9iago8PC9UeXBlIC9DYXRhbG9n...
Ressources associées (Related Resources)
- Source officielle : RFC 4648 (TXT)
- Page officielle : RFC 4648 DataTracker
- Errata : RFC Editor Errata
RFC associés
- RFC 2045 - MIME Part One (Définit Base64 pour MIME)
- RFC 3548 - Encodages Base (Obsolète par RFC 4648)
- RFC 7515 - JSON Web Signature (Utilise Base64URL)
- RFC 7519 - JSON Web Token (Utilise Base64URL)