web-dev-qa-db-fra.com

Quel est le véritable objectif de l'encodage Base64?

Pourquoi avons-nous un encodage Base64? Je suis un débutant et je ne comprends vraiment pas pourquoi voudriez-vous obscurcir les octets en autre chose (sauf s'il s'agit de cryptage). Dans l'un des livres que j'ai lus, l'encodage Base64 est utile lorsque la transmission binaire n'est pas possible. Par exemple. Lorsque nous publions un formulaire, il est codé. Mais pourquoi convertissons-nous les octets en lettres? Ne pourrions-nous pas simplement convertir les octets au format chaîne avec un espace entre les deux? Par exemple, 00000001 00000004? Ou simplement 0000000100000004 sans espace car les octets viennent toujours par paire de 8?

66
Jack

Base64 est un moyen de coder des données binaires dans un jeu de caractères ASCII connu de presque tous les systèmes informatiques, afin de transmettre les données sans perte ni modification du contenu lui-même. Par exemple, les systèmes de messagerie ne peut pas traiter les données binaires car ils attendent des données ASCII (textuelles). Donc, si vous souhaitez transférer une image ou un autre fichier, il sera corrompu en raison de la façon dont il traite les données.

Remarque: l'encodage base64 n'est PAS un moyen de chiffrement, ni un moyen de compacter des données. En fait, une donnée encodée en base64 est 1,333… fois plus grande que la pièce d'origine. Ce n'est qu'un moyen de s'assurer qu'aucune donnée n'est perdue ou modifiée pendant le transfert.

80
giorgio

Base64 est un mécanisme permettant de représenter et de transférer des données binaires sur des supports qui n'autorisent que les caractères imprimables. Il s'agit de la forme la plus populaire de "Base Encoding", les autres connues en usage étant Base16 et Base32.

Le besoin de Base64 est né de la nécessité de joindre du contenu binaire à des e-mails tels que des images, des vidéos ou du contenu binaire arbitraire. Étant donné que SMTP [RFC 5321] n'autorisait que les caractères US-ASCII 7 bits dans les messages, il était nécessaire de représenter ces flux d'octets binaires en utilisant les sept bits ASCII caractères ...

J'espère que cela répond à la question

8
Ahmed Shah

Base64 est un moyen plus ou moins compact de transmettre (encoder, en fait, mais dans le but de transmettre) tout type de données binaires.

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

"La règle générale est de choisir un ensemble de 64 caractères faisant partie d'un sous-ensemble commun à la plupart des encodages et également imprimables."

C'est un objectif très général et le besoin commun n'est pas de perdre plus d'espace que nécessaire.

Historiquement, il est basé sur le fait qu'il existe un sous-ensemble commun de (presque) tous les encodages utilisés pour stocker les caractères en octets et que beaucoup des 2 ^ 8 octets possibles risquent de perdre ou de se transformer lors d'un simple transfert de données (par exemple une copie) coller-e-mailsend-emailreceive-copier-coller).

(veuillez rediriger votre vote vers le commentaire de Brian, je le rends plus complet et, je l'espère, plus clair).

3
Denys Séguret