1043 Stimmen

Wozu dient die Base-64-Kodierung?

Ich habe gehört, dass hier und da von "Base 64 Encoding" die Rede ist. Wofür wird sie verwendet?

9 Stimmen

Aus dem Handbuch für base64_encode() : "Diese Kodierung wurde entwickelt, damit binäre Daten den Transport durch Transportschichten überstehen, die nicht 8-Bit sauber sind, wie z.B. Mail-Bodies."

104voto

Despertar Punkte 20373

Abgesehen von dem, was bereits gesagt wurde, sind zwei sehr häufige Verwendungszwecke, die noch nicht aufgeführt wurden, folgende

Hashes:

Hashes sind Einwegfunktionen, die einen Byte-Block in einen anderen Byte-Block mit einer festen Größe wie 128bit oder 256bit (SHA/MD5) umwandeln. Die Konvertierung der resultierenden Bytes in Base64 erleichtert die Anzeige des Hashes, insbesondere beim Vergleich einer Prüfsumme für die Integrität. Hashes sind so häufig in Base64 zu sehen, dass viele Leute Base64 selbst als Hash verwechseln.

Kryptographie:

Da ein Verschlüsselungsschlüssel nicht aus Text, sondern aus rohen Bytes bestehen muss, ist es manchmal notwendig, ihn in einer Datei oder Datenbank zu speichern, wofür Base64 sehr nützlich ist. Dasselbe gilt für die daraus resultierenden verschlüsselten Bytes.

Beachten Sie, dass Base64 zwar häufig in der Kryptografie verwendet wird, aber kein Sicherheitsmechanismus ist. Jeder kann die Base64-Zeichenkette in ihre ursprünglichen Bytes zurückverwandeln, daher sollte sie nicht als Mittel zum Schutz von Daten verwendet werden, sondern nur als Format zur einfacheren Anzeige oder Speicherung von Rohbytes.

Bescheinigungen

x509-Zertifikate im PEM-Format sind Base-64-kodiert. http://how2ssl.com/articles/working_with_pem_files/

9 Stimmen

In vielen Fällen ist es verarbeitungstechnisch einfacher, Bytes als Bytes zu speichern. Selbst in einer Datenbank, und insbesondere in einer Datei (wenn Datensätze mit fester Länge verwendet werden oder die Bytes der einzige Inhalt sind). Base64 wird in der Regel verwendet, wenn diese Bytes für folgende Zwecke bestimmt sind übermittelt irgendwo, insbesondere über einen Kanal, der möglicherweise Bits abschneidet oder einige der Bytes als Steuercodes interpretiert.

0 Stimmen

Ich habe noch nie gesehen, dass ein Hash als vorzeichenlose 8-Bit-Ganzzahl (0,1,255,36...) geschrieben wurde, und die Anzeige mit UTF-8 oder einer anderen Kodierung würde keinen Sinn ergeben, wie sollte man ihn sonst anzeigen, außer mit base64? Verschlüsselungsschlüssel und verschlüsselte Daten werden oft in Konfigurations- und XML-Dateien gespeichert, in denen man die rohen Bytes nicht speichern kann. Ich stimme zu, wenn Sie es als rohe Bytes speichern können, dann auf jeden Fall, aber base64 ist für die Situationen, in denen Sie nicht können. Es gibt viele Verwendungszwecke von base64 über die Übertragung hinaus. Dies sind lediglich zwei häufige Szenarien, in denen es zum Einsatz kommt.

2 Stimmen

Sie würden den Hash als Hexadezimalwert anzeigen, nicht als Dezimalwert. Bei Hashes ist dies sogar weitaus üblicher als base64.

36voto

James Curran Punkte 98228

In den Anfängen der Computertechnik, als die Kommunikation zwischen den Telefonleitungen nicht besonders zuverlässig war, wurde eine schnelle und schmutzige Methode zur Überprüfung der Datenintegrität verwendet: "Bit-Parität". Bei dieser Methode besteht jedes übertragene Byte aus 7 Datenbits, wobei das achte Bit 1 oder 0 ist, damit die Gesamtzahl der 1-Bits im Byte gerade ist.

Somit würde 0x01 als 0x81 übertragen werden; 0x02 wäre 0x82; 0x03 würde 0x03 bleiben usw.

Um dieses System zu fördern, wurden bei der Definition des ASCII-Zeichensatzes nur die Zeichen 00-7F zugewiesen. (Auch heute noch sind alle Zeichen im Bereich 80-FF nicht standardisiert)

Viele damalige Router haben die Paritätsprüfung und die Byteumwandlung in die Hardware integriert und zwingen die angeschlossenen Computer, ausschließlich mit 7-Bit-Daten zu arbeiten. Dadurch mussten E-Mail-Anhänge (und alle anderen Daten, weshalb HTTP- und SMTP-Protokolle textbasiert sind) in ein reines Textformat konvertiert werden.

Nur wenige der Router haben bis in die 90er Jahre überlebt. Ich bezweifle stark, dass einer von ihnen heute noch in Gebrauch ist.

3 Stimmen

Dies ist ein ausgezeichneter Diskussionspunkt und eine interessante Geschichtsstunde, danke.

1 Stimmen

Ich denke aber, dass die Einführung von 7-Bit-ASCII in erster Linie auf Lochstreifenformate zurückzuführen ist, und seine Ursprünge liegen eher in der Telegrafie als in der Kommunikation zwischen Computern,

29voto

warren Punkte 30258

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

Der Begriff Base64 bezieht sich auf eine bestimmte MIME-Inhaltsübertragungskodierung. Er wird auch als allgemeiner Begriff für jedes ähnliche Kodierungsschema verwendet, das Binärdaten kodiert, indem es sie numerisch behandelt und sie in eine eine Basis-64-Darstellung. Die besondere Wahl der Basis ergibt sich aus der Geschichte der Zeichensatzkodierung: Man kann einen Satz von 64 Zeichen wählen Zeichen wählen, die beide Teil der Untermenge sind, die den meisten Kodierungen gemeinsam ist, und auch druckbar ist. Diese Kombination macht es unwahrscheinlich, dass die Daten Systeme, wie z. B. E-Mail, verändert werden, die in der Vergangenheit traditionell nicht 8-Bit-sauber sind.

Base64 kann in einer Vielzahl von Kontexten verwendet werden:

  • Evolution und Thunderbird verwenden Base64 zur Verschleierung von E-Mail-Kennwörtern[1].

  • Base64 kann zur Übertragung und Speicherung von Text verwendet werden, bei dem es andernfalls zu Kollisionen mit Begrenzungszeichen kommen könnte

  • Base64 wird oft als schnelle, aber unsichere Abkürzung verwendet, um Geheimnisse zu verschleiern, ohne den Aufwand einer kryptografischen Schlüsselverwaltung zu betreiben

  • Spammer verwenden Base64, um einfache Anti-Spamming-Tools zu umgehen, die Base64 oft nicht dekodieren und daher Schlüsselwörter in kodierten Dateien nicht erkennen können. Nachrichten erkennen.

  • Base64 wird zur Kodierung von Zeichenketten in LDIF-Dateien verwendet

  • Base64 wird manchmal verwendet, um binäre Daten in eine XML-Datei einzubetten, wobei eine Syntax ähnlich der von ...... verwendet wird. z.B. Firefox's Lesezeichen.html.

  • Base64 wird auch bei der Kommunikation mit staatlichen Signaturdruckern verwendet (in der Regel über serielle oder parallele Schnittstellen), um um die Verzögerung bei der Übertragung von Empfangszeichen für die Unterzeichnung zu minimieren.

  • Base64 wird zur Kodierung von Binärdateien wie Bildern innerhalb von Skripten verwendet, um die Abhängigkeit von externen Dateien zu vermeiden.

  • Kann verwendet werden, um rohe Bilddaten in eine CSS-Eigenschaft wie "background-image" einzubetten.

16voto

Akshay Kumar Punkte 73

El base64 ist ein Binär-zu-Text-Kodierungsschema, das binäre Daten in einem ASCII-String-Format darstellt. base64 wurde entwickelt, um im Binärformat gespeicherte Daten über die Kanäle zu übertragen. Es nimmt jede Form von Daten und wandelt sie in eine lange Zeichenkette aus Klartext um. Früher konnten wir keine großen Datenmengen wie Dateien übertragen, weil sie aus 2-Bit-Bytes bestanden, aber unser aktuelles Netzwerk verwendet 2 Bit Bytes. An dieser Stelle kommt die base64-Kodierung ins Spiel. Aber was bedeutet base64 eigentlich?

Wir wollen die Bedeutung von base64 verstehen.

base64 = base+64

Wir können base64 als Radix-64-Darstellung bezeichnen. base64 verwendet nur 6 Bits (2 = 64 Zeichen), um sicherzustellen, dass die druckbaren Daten für Menschen lesbar sind. Aber wie? Wir können auch base65 oder base78 schreiben, aber warum nur 64? Die base64-Kodierung enthält 64 Zeichen, um eine beliebige Zeichenfolge zu kodieren. base64 enthält:

10 numerischer Wert, d. h. 0,1,2,3, ..9.

26 Großbuchstaben, d. h. A, B, C, D, .Z.

26 Kleinbuchstaben, d. h. a, b, c, d, ..z.

zwei Sonderzeichen, z.B. +,/. Dies hängt von Ihrem Betriebssystem ab.

Die Schritte, die der base64-Algorithmus sind wie folgt:

  1. die Anzahl der Zeichen in einer Zeichenkette zählen.
  2. Wenn es kein Vielfaches von 3 ist, wird es mit einem Sonderzeichen, z. B. =, aufgefüllt, um um es zu einem Vielfachen von 3 zu machen.
  3. Kodiert die Zeichenkette im ASCII-Format.
  4. Nun wird das ASCII-Format in das Binärformat mit jeweils 8 Bit umgewandelt.
  5. Nach der Konvertierung in das Binärformat werden die Binärdaten unterteilt in Stücke von jeweils 6 Bits.
  6. Die 6-Bit-Binärdaten werden nun in Dezimalwerte umgewandelt Zahlenformat umgewandelt.
  7. Mit Hilfe der base64-Indizierungstabelle werden die Dezimalzahlen erneut umgewandelt in eine Zeichenkette entsprechend dem Tabellenformat umgewandelt.
  8. Schließlich erhalten wir die kodierte Version unserer Eingabezeichenfolge.

16voto

Konrad Rudolph Punkte 503837

Einige Transportprotokolle erlauben nur die Übertragung von alphanumerischen Zeichen. Stellen Sie sich eine Situation vor, in der Steuerzeichen verwendet werden, um spezielle Aktionen auszulösen und/oder die nur eine begrenzte Bitbreite pro Zeichen unterstützt. Base64 wandelt jede Eingabe in eine Kodierung um, die nur alphanumerische Zeichen verwendet, + , / und die = als Auffüllzeichen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X