Pourquoi avons-nous l'encodage Base64? Je suis débutant et je ne comprends vraiment pas pourquoi vous voudriez obscurcir les octets en quelque chose d'autre (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 envoyons un formulaire, il est encodé. Mais pourquoi convertissons-nous des octets en lettres? Pourquoi ne pourrions-nous pas simplement convertir des octets en format de chaîne avec un espace entre eux? Par exemple, 00000001 00000004
? Ou simplement 0000000100000004
sans espace car les octets viennent toujours par paire de 8?
Réponses
Trop de publicités?Le Base64 est une façon d'encoder 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 ou modification du contenu lui-même. Par exemple, les systèmes de messagerie ne peuvent 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.
Note : l'encodage en Base64 n'est PAS une méthode de cryptage, ni une méthode de compression des données. En fait, une donnée encodée en Base64 est 1,333 fois plus grande que la pièce originale. C'est simplement une façon d'être sûr qu'aucune donnée n'est perdue ou modifiée pendant le transfert.
Base64 est un mécanisme permettant de représenter et de transférer des données binaires sur des supports n'acceptant que des caractères imprimables. C'est la forme la plus populaire du « Base Encoding », les autres connues étant Base16 et Base32.
Le besoin de Base64 est né de la nécessité d'attacher du contenu binaire à des e-mails tels que des images, des vidéos ou du contenu binaire arbitraire. Puisque le protocole SMTP [RFC 5321] ne permettait que des caractères US-ASCII sur 7 bits dans les messages, il était nécessaire de représenter ces flux d'octets binaires à l'aide des caractères ASCII sur sept bits...
En espérant que cela réponde à la question
Base64 est un moyen plus ou moins compact de transmettre (encoder, en fait, mais dans le but de transmettre) n'importe quel type de données binaires.
Voir http://fr.wikipedia.org/wiki/Base64
"La règle générale est de choisir un ensemble de 64 caractères qui fait partie à la fois d'un sous-ensemble commun à la plupart des encodages, et également imprimable."
C'est un but très général et le besoin commun est de ne pas gaspiller plus d'espace que nécessaire.
Historiquement, cela repose sur le fait qu'il existe un sous-ensemble commun à (presque) tous les encodages utilisés pour stocker des caractères dans des octets et qu'une grande partie des 2^8 octets possibles risquent d'être perdus ou transformés lors d'un simple transfert de données (par exemple une séquence copier-coller-envoi par email-réception email-copier-coller).
(veuillez rediriger le vote positif vers le commentaire de Brian, je l'ai simplement rendu plus complet et j'espère plus clair).
Pour la transmission de données, les données peuvent être textuelles ou non textuelles (binaires) comme une image, une vidéo, un fichier, etc.
Comme nous le savons, pendant la transmission, seul un flux de données (caractères textuels/imprimables) peut être envoyé ou reçu, donc nous avons besoin d'une manière d'encoder les données non textuelles comme les images, les vidéos, les fichiers.
La représentation binaire et ASCII des données non textuelles (images, vidéos, fichiers) est facilement obtenue. Une telle représentation non textuelle (binaire) est encodée en format textuel de telle manière que chaque caractère ASCII prend un des soixante-quatre (A-Z, a-z, 0-9, + et /
) caractères possibles.
Tableau 1: L'alphabet Base 64
Valeur Encodage Valeur Encodage Valeur Encodage Valeur Encodage
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 (pad) =
15 P 32 g 49 x
16 Q 33 h 50 y
Ce jeu de soixante-quatre caractères est appelé Base64
et encoder des données données dans ce jeu de caractères autorisés soixante-quatre est appelé encodage Base64
.
Prenons des exemples de quelques caractères ASCII lorsqu'ils sont encodés en Base64.
1
==> MQ==
12
==> MTI=
123
==> MTIz
1234
==> MTIzNA==
12345
==> MTIzNDU=
123456
==> MTIzNDU2
Ici, quelques points doivent être notés:
- L'encodage Base64 se produit en blocs de 4 caractères. Parce qu'un caractère ASCII peut prendre n'importe lequel des 256 caractères, ce qui nécessite 4 caractères de Base64 pour le couvrir. Si la valeur ASCII donnée est représentée en moins de caractères, le reste des caractères est complété par
=
. =
ne fait pas partie de l'ensemble de caractères Base64. Il est seulement utilisé pour le rembourrage.
Ainsi, on peut voir que l'encodage Base64 n'est pas un chiffrement mais simplement une manière de transformer n'importe quelle donnée donnée en un flux de caractères imprimables qui peuvent être transmis sur un réseau.