Aller au contenu principal

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.


Copyright (C) The Internet Society (2006).


Table des matières (Contents)

Sections principales


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

EncodageObjectif principalApplications typiques
Base64Encodage binaire généralPièces jointes MIME, jetons JWT, URI de données
Base64URLEncodage sécurisé pour URLJWT, jetons OAuth, paramètres d'URL
Base32Encodage lisible par l'hommeClés TOTP, encodage Crockford
Base16Encodage hexadécimalAffichage 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...

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)