Base64

En informatique, base64 est un codage de l'information utilisant 64 caractères, choisis pour être disponibles sur la majorité des systèmes. Il est principalement utilisé pour la transmission de messages (courrier électronique et messages de forum Usenet). Il est défini en tant que codage MIME.

Sommaire

Description

Un alphabet de 65 caractères est utilisé pour permettre la représentation de 6 bits par un caractère simple. Le 65e caractère (signe « = ») n'est utilisé qu'en complément final dans le processus de codage d'un message.

Ce processus de codage consiste à coder chaque groupe de 24 bits successifs de données par une chaîne de 4 caractères simples. On procède de gauche à droite, en concaténant 3 octets pour créer un seul groupement de 24 bits (8 bits par octet). Ils sont alors séparés en 4 nombres de seulement 6 bits (qui en binaire ne permettent que 64 combinaisons). Chacune des 4 valeurs est enfin représentée (codée) par un caractère simple et prédéfini de l'alphabet retenu. (Table ci-dessous.)

Ainsi 3 octets quelconques sont remplacés par 4 caractères simples, choisis pour être compatibles avec tous les systèmes existants.


Chaque valeur (chaque groupe de 6 bits) est utilisée comme index dans la table ci-dessous. Le caractère correspondant est indiqué dans la colonne codage.

    Valeur Codage   Valeur Codage   Valeur Codage   Valeur Codage
         0 A            17 R            34 i            51 z
         1 B            18 S            35 j            52 0
         2 C            19 T            36 k            53 1
         3 D            20 U            37 l            54 2
         4 E            21 V            38 m            55 3
         5 F            22 W            39 n            56 4
         6 G            23 X            40 o            57 5
         7 H            24 Y            41 p            58 6
         8 I            25 Z            42 q            59 7
         9 J            26 a            43 r            60 8
        10 K            27 b            44 s            61 9
        11 L            28 c            45 t            62 +
        12 M            29 d            46 u            63 /
        13 N            30 e            47 v
        14 O            31 f            48 w  (complément) =
        15 P            32 g            49 x
        16 Q            33 h            50 y

Un traitement spécial est effectué si moins de 24 bits sont disponibles à la fin de la séquence de données à coder (elle n'a pas forcément une taille multiple de 64 bits). Dans un tel cas, des zéros sont ajoutés à la droite des données initiales pour aller vers le multiple de 6 bits le plus proche. Chaque paquet de 6 bits est converti dans l'alphabet. Puis on ajoute des caractères '=' complémentaires pour former quand même 4 caractères.

Puisque les données d'entrée doivent être constituées d'un nombre entier d'octets, seuls trois cas sont possibles en fin de séquence :

  • il reste exactement 3 octets à coder (24 bits), alors on obtient directement 4 caractères sans traitement complémentaire ;
  • il reste seulement 2 octets (16 bits) à coder, alors on ajoute 2 zéros à droite pour former 3 caractères de l'alphabet (3×6 = 16+2 = 18 bits) suivis d'un quatrième caractère '=' en complément;
  • il reste un seul octet (8 bits) à coder, alors on ajoute 4 zéros à droite pour former 2 caractères de l'alphabet (2×6 = 8+4 = 12 bits) suivis de deux caractères '=' en complément.

Reproche

On reproche souvent à ce codage une augmentation de la taille de données. Car les caractères de codage (ceux de l'alphabet) sont généralement stockés ensuite selon la table ASCII habituelle. Ce qui immobilise un octet pour chaque caractère. Bien sûr toutes les possibilités de la table ASCII ne sont pas utilisées. C'était l'objectif de se restreindre à certains caractères !

Il faut néanmoins 32 bits (4×8) pour en stocker 24 (3×8) dans les systèmes habituels. C'est alors une augmentation d'au moins 33% de la taille.

On reproche aussi souvent à ce codage d'être illisible au premier regard humain. Contre ces défauts, si la majorité des caractères d'un texte initial sont déjà "simples" (c'est-à-dire compatibles avec tous les systèmes), on peut envisager de ne coder que les caractères problématiques. Voir par exemple pour cela l'encodage Quoted-Printable.

Intérêt

L’intérêt de l'encodage base64 ne se trouve donc pas dans la représentation de données textuelles, mais surtout dans la représentation de données binaires.

Lorsque l’on veut représenter des données binaires (une image, un exécutable) dans un document textuel, tel qu’un courriel, la simple transcription des 0 et des 1 utilise en ASCII un octet pour chaque bit : soit une augmentation de la taille d’un facteur 8. L'encodage en base64 devient donc très compétitif.

Par ailleurs, le reproche fait sur la lisibilité des données tombe de lui-même dans ces conditions : les données binaires n’ont pas vocation à être compréhensibles sans interprétation par un logiciel dédié (cas d’une image, par exemple).

base64url

Le document RFC 4648 prévoit une alternative pour un encodage compatible avec les noms de fichiers et les URI. En effet les caractères 62 (+) et 63 (/) peuvent poser problème avec certains systèmes de fichier et dans les URI. La solution retenue consiste à remplacer ces caractères respectivement par un moins (-) et un souligné (_). Le caractère de complément reste le =, mais peut être ignoré.

    Valeur Codage   Valeur Codage   Valeur Codage   Valeur Codage
         0 A            17 R            34 i            51 z
         1 B            18 S            35 j            52 0
         2 C            19 T            36 k            53 1
         3 D            20 U            37 l            54 2
         4 E            21 V            38 m            55 3
         5 F            22 W            39 n            56 4
         6 G            23 X            40 o            57 5
         7 H            24 Y            41 p            58 6
         8 I            25 Z            42 q            59 7
         9 J            26 a            43 r            60 8
        10 K            27 b            44 s            61 9
        11 L            28 c            45 t            62 - (minus)
        12 M            29 d            46 u            63 _ (underline)
        13 N            30 e            47 v
        14 O            31 f            48 w  (complément) =
        15 P            32 g            49 x
        16 Q            33 h            50 y

Exemple

Prenons le groupe de 3 caractères « Hi! ». Ci-dessous la première ligne indique en binaire l'équivalence de ces 3 octets. La transformation consiste comme on peut le voir, à séparer les bits pour former en sortie 4 groupes de 6 bits :

01001000 01101001 00100001 ⇔ 010010 000110 100100 100001

Les 4 groupes de 6 bits en sortie nous donnent les valeurs 18, 6, 36 et 33. Ainsi en suivant la correspondance de la table indexée nous obtenons les 4 caractères « SGkh ».

Exemple avec OpenSSL

Encodage d'un fichier texte en base64 :

$ openssl enc -base64 -in monfichier.txt -out monfichier.b64

Décodage d'un fichier texte en base64 :

$ openssl enc -d -base64 -in monfichier.b64 -out monfichier.txt

Liens externes

Ressources


Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Base64 de Wikipédia en français (auteurs)

Regardez d'autres dictionnaires:

  • Base64 — буквально означает  позиционная система счисления с основанием 64. Здесь 64  это наибольшая степень двойки (26), которая может быть представлена с использованием печатных символов ASCII. Эта система широко используется в электронной… …   Википедия

  • Base64 — ist ein Begriff aus dem Computerbereich und beschreibt ein Verfahren zur Kodierung von 8 Bit Binärdaten (z. B. ausführbare Programme, ZIP Dateien) in eine Zeichenfolge, die nur aus lesbaren Codepage unabhängigen ASCII Zeichen besteht. Im… …   Deutsch Wikipedia

  • Base64 — Numeral systems by culture Hindu Arabic numerals Western Arabic (Hindu numerals) Eastern Arabic Indian family Tamil Burmese Khmer Lao Mongolian Thai East Asian numerals Chinese Japanese Suzhou Korean Vietnamese …   Wikipedia

  • Base64 — Base 64 es un sistema de numeración posicional que usa 64 como base. Es la mayor potencia de dos que puede ser representada usando únicamente los caracteres imprimibles de ASCII. Esto ha propiciado su uso para codificación de correos electrónicos …   Wikipedia Español

  • base64 — ● n. m. ►NORM Norme clairement définie (RFC 2045) de codage des caractères 8 bits sur 6 bits: un groupe de 3 octets devient un groupe de 4 ensembles de 6 bits, les 6 bits étant codés selon un sous ensemble de l US ASCII étant: [A Za z0 9+/=]… …   Dictionnaire d'informatique francophone

  • base64 — Kodierungsverfahren zur Umwandlung von 8 Bit in 7 Bit Daten, eingesetzt u.a. bei MIME …   Acronyms

  • base64 — Kodierungsverfahren zur Umwandlung von 8 Bit in 7 Bit Daten, eingesetzt u.a. bei MIME …   Acronyms von A bis Z

  • base64 —    An encoding scheme used by MIME compliant mail systems to convert binary files into a text format that can be processed and sent as e mail.    See also binary file; Multipurpose Internet Mail Extension …   Dictionary of networking

  • Позиционная система счисления с основанием 64 — Base64 буквально означает  позиционная система счисления с основанием 64. Здесь 64  это наибольшая степень двойки (26), которая может быть представлена с использованием печатных символов электронной почте для представления бинарных файлов в… …   Википедия

  • Base 64 — Base64 ist ein Begriff aus dem Computerbereich und beschreibt ein Verfahren zur Kodierung von 8 Bit Binärdaten (z. B. ausführbare Programme, ZIP Dateien), in eine Zeichenfolge, die nur aus wenigen, Codepage unabhängigen ASCII Zeichen besteht. Im… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”