Was ist der eigentliche Zweck der Base64-Codierung?


81

Warum haben wir Base64-Codierung? Ich bin ein Anfänger und verstehe wirklich nicht, warum Sie die Bytes in etwas anderes verschleiern sollten (es sei denn, es handelt sich um Verschlüsselung). In einem der Bücher, die ich gelesen habe, ist die Base64-Codierung nützlich, wenn keine binäre Übertragung möglich ist. Z.B. Wenn wir ein Formular veröffentlichen, wird es verschlüsselt. Aber warum konvertieren wir Bytes in Buchstaben? Könnten wir nicht einfach Bytes in ein Zeichenfolgenformat mit einem Leerzeichen dazwischen konvertieren? Zum Beispiel 00000001 00000004? Oder einfach 0000000100000004ohne Leerzeichen, weil Bytes immer zu zweit kommen?


11
Weil Sie gerade 1 Byte in 8 anstatt 3 in 4 umgewandelt haben, wie Sie es mit base64 tun (wenn der Speicher mir richtig dient). Die Bandbreite ist endlich.
Brian Roach

Sie verwechseln Bits (mit 8 Bits machen Sie ein Byte) und Bytes, die in jeder Art von Gruppierung auftreten können.
Denys Séguret

Antworten:


106

Base64 ist eine Möglichkeit, Binärdaten in einen ASCII-Zeichensatz zu codieren, der so gut wie jedem Computersystem bekannt ist, um die Daten ohne Verlust oder Änderung des Inhalts selbst zu übertragen. Beispielsweise können Mailsysteme keine Binärdaten verarbeiten, da sie ASCII-Daten (Textdaten) erwarten. Wenn Sie also ein Bild oder eine andere Datei übertragen möchten, wird es aufgrund des Umgangs mit den Daten beschädigt.

Hinweis: Die Base64-Codierung ist weder eine Methode zum Verschlüsseln noch zum Komprimieren von Daten. Tatsächlich ist ein Base64-codiertes Datenelement 1,333-mal größer als die ursprüngliche Datenbehandlung. Dies ist nur eine Möglichkeit, um sicherzustellen, dass während der Übertragung keine Daten verloren gehen oder geändert werden.


5
Base64-codierte Daten sind genau 1,333 (3) mal größer als die Originaldaten + zusätzliche 0-3 zusätzliche Zeichen, abhängig von der Länge des Eingabedatenmoduls 4. Dies liegt daran, dass jedes Base64-codierte Zeichen Informationen im Wert von 6 Bit (64 verschiedene Zeichen) speichert. .
Auch

2
Sowohl vor als auch nach den Daten sind noch binär. Warum gehen dann Daten verloren
?

12

Base64 ist ein Mechanismus zum Darstellen und Übertragen von Binärdaten über Medien, die nur druckbare Zeichen zulassen. Es ist die beliebteste Form der „Basiscodierung“, die anderen bekannten sind Base16 und Base32.

Die Notwendigkeit für Base64 ergab sich aus der Notwendigkeit, binären Inhalt an E-Mails wie Bilder, Videos oder beliebigen binären Inhalt anzuhängen. Da SMTP [RFC 5321] nur 7-Bit-US-ASCII-Zeichen in den Nachrichten zuließ, mussten diese binären Oktettströme mit den 7-Bit-ASCII-Zeichen dargestellt werden ...

Hoffe das beantwortet die Frage


3

Base64 ist eine mehr oder weniger kompakte Art der Übertragung (Codierung, aber mit dem Ziel der Übertragung) jeglicher Art von Binärdaten.

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

"Die allgemeine Regel besteht darin, einen Satz von 64 Zeichen auszuwählen, der sowohl Teil einer Teilmenge ist, die den meisten Codierungen gemeinsam ist, als auch druckbar ist."

Dies ist ein sehr allgemeiner Zweck, und es besteht die allgemeine Notwendigkeit, nicht mehr Platz als nötig zu verschwenden.

Historisch gesehen basiert es auf der Tatsache, dass es eine gemeinsame Teilmenge von (fast) allen Codierungen gibt, die zum Speichern von Zeichen in Bytes verwendet werden, und dass viele der 2 ^ 8 möglichen Bytes während einer einfachen Datenübertragung einen Verlust oder Transformationen riskieren (zum Beispiel eine Kopie). Einfügen-E-Mail-Senden-E-Mail-Empfangen-Kopieren-Einfügen-Sequenz).

(Bitte leiten Sie die Gegenstimme zu Brians Kommentar weiter. Ich mache es nur vollständiger und hoffentlich klarer.)


Nein, es ist erst früh und ich hatte keine Lust, eine vollständige Antwort zu finden. Das ist gut.
Brian Roach
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.