Question À quoi sert l'encodage en base 64?


J'ai entendu des gens parler de "base 64 encoding" ici et là. A quoi cela sert?


595
2017-10-14 14:50


origine


Réponses:


Lorsque vous avez des données binaires que vous souhaitez envoyer sur un réseau, vous ne le faites généralement pas en diffusant simplement les bits et les octets sur le réseau dans un format brut. Pourquoi? parce que certains médias sont faits pour diffuser du texte. Vous ne savez jamais - certains protocoles peuvent interpréter vos données binaires comme des caractères de contrôle (comme un modem), ou vos données binaires pourraient être bousillées parce que le protocole sous-jacent pourrait penser que vous avez entré une combinaison de caractères spéciaux (comme FTP traduit une ligne fins).

Donc, pour contourner cela, les gens encodent les données binaires en caractères. Base64 est l'un de ces types de codages.

Pourquoi 64?
Parce que vous pouvez généralement compter sur les mêmes 64 caractères présents dans de nombreux jeux de caractères, et vous pouvez être raisonnablement sûr que vos données vont se retrouver de l'autre côté du fil sans être corrompues.


726
2017-10-14 14:56



C'est fondamentalement un moyen de coder des données binaires arbitraires en texte ASCII. Il faut 4 caractères par 3 octets de données, plus potentiellement un peu de remplissage à la fin.

Essentiellement, chaque 6 bits de l'entrée est codé dans un alphabet de 64 caractères. L'alphabet "standard" utilise A-Z, a-z, 0-9 et + et /, avec = comme caractère de remplissage. Il existe des variantes URL-safe.

Wikipédia est une source raisonnablement bonne d'informations supplémentaires.


172
2017-10-14 14:53



L'encodage Base-64 est un moyen de prendre des données binaires et de les transformer en texte afin qu'il soit plus facilement transmis dans des choses comme les données de formulaires électroniques et HTML.

http://en.wikipedia.org/wiki/Base64


102
2017-10-14 14:52



C'est un codage textuel de données binaires où le texte résultant n'a que des lettres, des chiffres et les symboles "+", "/" et "=". C'est un moyen pratique de stocker / transmettre des données binaires sur un support spécifiquement utilisé pour les données textuelles.

Mais pourquoi Base-64? Les deux alternatives pour convertir les données binaires en texte qui viennent immédiatement à l'esprit sont:

  1. Decimal: stocke la valeur décimale de chaque octet sous la forme de trois nombres: 045 112 101 037 etc. où chaque octet est représenté par 3 octets. Les données gonflent trois fois.
  2. Hexadécimal: stocke les octets comme des paires hexadécimales: AC 47 0D 1A etc. où chaque octet est représenté par 2 octets. Les données gonflent deux fois.

Base-64 mappe 3 octets (8 x 3 = 24 bits) en 4 caractères qui couvrent 6 bits (6 x 4 = 24 bits). Le résultat ressemble à "TWFuIGlzIGRpc3Rpb ...". Par conséquent, les ballonnements ne sont que de 4/3 = 1.3333333 fois l'original.


96
2017-10-14 15:02



Mis à part ce qui a déjà été dit, deux utilisations très courantes qui n'ont pas été listées sont

Hashes:

Les hachages sont des fonctions unidirectionnelles qui transforment un bloc d'octets en un autre bloc d'octets de taille fixe, tel que 128 bits ou 256 bits (SHA / MD5). La conversion des octets résultants en Base64 facilite l'affichage du hachage, en particulier lorsque vous comparez une somme de contrôle pour l'intégrité. Les hachages sont si souvent vus dans Base64 que beaucoup de gens confondent Base64 lui-même comme un hachage.

Cryptographie:

Puisqu'une clé de chiffrement ne doit pas nécessairement être du texte mais des octets bruts, il est parfois nécessaire de la stocker dans un fichier ou une base de données, ce qui est pratique pour Base64. Idem avec les octets cryptés résultants.

Notez que bien que Base64 soit souvent utilisé en cryptographie, ce n'est pas un mécanisme de sécurité. N'importe qui peut convertir la chaîne Base64 en ses octets d'origine, il ne devrait donc pas être utilisé comme un moyen de protection des données, seulement comme un format pour afficher ou stocker des octets bruts plus facilement.

Certificats

Les certificats x509 au format PEM sont codés en base 64. http://how2ssl.com/articles/working_with_pem_files/ 


62
2017-08-25 03:53



De http://en.wikipedia.org/wiki/Base64 

Le terme Base64 fait référence à un codage de transfert de contenu MIME spécifique.   Il est également utilisé comme un terme générique pour tout schéma d'encodage similaire   code les données binaires en les traitant numériquement et en les traduisant   une représentation de base 64. Le choix particulier de la base est dû à   histoire de l'encodage du jeu de caractères: on peut choisir un jeu de 64   les caractères qui font partie du sous-ensemble commun à la plupart des encodages,   et aussi imprimable. Cette combinaison laisse les données peu susceptibles d'être   modifiés en transit à travers des systèmes, tels que le courrier électronique, qui   traditionnellement pas 8 bits propre.

Base64 peut être utilisé dans une variété de contextes:

  • Evolution et Thunderbird utilisent Base64 pour masquer les mots de passe des e-mails [1]
  • Base64 peut être utilisé pour transmettre et stocker du texte qui pourrait provoquer une collision par délimiteur
  • Base64 est souvent utilisé comme un raccourci rapide mais non sécurisé pour obscurcir les secrets sans encourir la surcharge de la gestion des clés cryptographiques

  • Les spammeurs utilisent Base64 pour échapper aux outils antispam de base, qui souvent ne décodent pas Base64 et ne peuvent donc pas détecter les mots-clés codés.   messages.

  • Base64 est utilisé pour encoder des chaînes de caractères dans les fichiers LDIF
  • Base64 est parfois utilisé pour incorporer des données binaires dans un fichier XML, en utilisant une syntaxe similaire à ...... par exemple.   Firefox bookmarks.html.
  • Base64 est également utilisé lors de la communication avec les périphériques d'impression Fiscal Signature du gouvernement (généralement sur des ports série ou parallèles) pour   minimiser le délai lors du transfert des caractères de réception pour la signature.
  • Base64 est utilisé pour encoder des fichiers binaires tels que des images dans des scripts, pour éviter de dépendre de fichiers externes.
  • Peut être utilisé pour incorporer des données d'images brutes dans une propriété CSS telle que background-image.

22
2017-10-14 14:54



Aux débuts de l'informatique, lorsque la communication inter-système de la ligne téléphonique n'était pas particulièrement fiable, une méthode rapide et sale de vérification de l'intégrité des données était utilisée: la "parité des bits". Dans ce procédé, chaque octet transmis aurait 7 bits de données, et le 8 serait 1 ou 0, pour forcer le nombre total de 1 bits dans l'octet à être pair.

D'où 0x01 serait transmise comme 0x81; 0x02 serait 0x82; 0x03 resterait 0x03 etc.

Pour faire avancer ce système, lorsque le jeu de caractères ASCII a été défini, seuls les caractères 00-7F ont été affectés. (Encore aujourd'hui, tous les personnages de la gamme 80-FF ne sont pas standard)

De nombreux routeurs de la journée mettent la vérification de parité et la traduction des octets dans le matériel, forçant les ordinateurs attachés à traiter strictement les données à 7 bits. Cela force les pièces jointes (et toutes les autres données, ce qui explique pourquoi les protocoles HTTP et SMTP sont basés sur du texte) à convertir en un format texte seulement.

Peu de routeurs ont survécu dans les années 90. Je doute fort qu'aucun d'entre eux ne soit utilisé aujourd'hui.


18
2017-10-14 15:09