WikiDer > Basis64

Base64

base64 ist eine Möglichkeit, Binärcode in umzuwandeln ASCIIZeichen. Die Codierung wird unter anderem verwendet in Email zu Anhänge senden (siehe MIME), aber auch auf andere Weise ist es Internet benutzt. Die Konvertierung in ASCII ist notwendig, da viele Protokolle im Internet auf der Verwendung von (7 Bits) ASCII-Zeichen und kein 8-Bit-Binärcode.

Der Inhalt einer Binärdatei wird oft in hexadezimal Form, mit 16 verschiedenen Zeichen (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E und F), wobei jedes Zeichen 4 Bit repräsentiert. Base64 ist eine 6-Bit-Codierung. Das heißt dort verschiedene Zeichen, daher der Name base64. Base64 ist daher kürzer als eine hexadezimale Kodierung, es beträgt etwa 133% der Länge einer 8-Bit-Kodierung, während eine hexadezimale Kodierung doppelt so lang ist wie die ursprüngliche 8-Bit-Kodierung.

Der gemeinsame Vorteil der base64- und hexadezimalen Kodierung besteht darin, dass alle Zeichen visuell unterscheidbar sind. Dies sind nicht alle Zeichen, die unter die ASCII-Codierung fallen (einschließlich nicht der ersten 33 ASCII-Zeichen, einschließlich des Leerzeichens und des Wagenrücklauf).

Konvertieren

So konvertieren Sie einen 8-Bit-String manuell in base64:

  1. Die Zeichen werden in binär umgewandelt
  2. Es wird immer eine Gruppe von sechs Bits genommen
  3. Die Bitgruppen werden umgewandelt in converted Dezimal
  4. Nach Dezimalzahl Nummer (im Bereich von 0 bis 63) wird das Zeichen genommen, das sich an Position (n 1) in der base64-Zeichenfolge ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 / befindet.

Es funktioniert nicht immer, da die Anzahl der Bits ein 6-faches sein muss.Wenn dies nicht der Fall ist, werden 2 oder 4 Nullen hinzugefügt, je nachdem, wie viele zusätzliche Bits benötigt werden. Wenn 2 Nullen hinzugefügt werden, wird "=" nach dem Endergebnis hinzugefügt, wenn 4 Nullen hinzugefügt werden "==". Beispielsweise ist die Länge eines base64-Strings immer das 4-fache.

Ein Beispiel mit der Zeichenfolge "π ∈ ℝ", codiert als UTF-8:11001111 10000000 00100000 11100010 10001000 10001000 00100000 11100010 10000100 10011101

Gruppe in 6er-Gruppen:

110011 111000 000000 100000 111000 101000 100010 001000 001000 001110 001010 000100 100111 01

Ergänzung der letzten Gruppe mit vier Nullen, bis sie auch aus 6 Bits besteht:

110011 111000 000000 100000 111000 101000 100010 001000 001000 001110 001010 000100 100111 010000

in dezimal umwandeln:

51 56 0 32 56 40 34 8 8 14 10 4 39 16

Wählen Sie das entsprechende Zeichen aus dem base64-String:

z 4 A g 4 o i I I O K E n Q

Endresultat:

z4Ag4oiIIOKEnQ== (zwei "="-Zeichen wurden hinzugefügt, um ein Vierfaches zu erhalten).

Ein Computer wandelt die Zahlen nicht zuerst in Dezimalzahlen um, da Computer selbst mit dem Binärsystem arbeiten.

Die Anzahl der Zeichen (einschließlich der hinzugefügten "="-Zeichen) im Endergebnis beträgt immer das 4-fache. Dies lässt sich wie folgt berechnen. Jede Gruppe von 3 Byte (24 Bit) ergibt 4 Gruppen von 6 Bit und damit 4 Base64-Zeichen. Ein einzelnes Byte führt nach der Addition zu 2 Base64-Zeichen mit 4 Nullen, danach werden 2 =-Zeichen hinzugefügt. Also insgesamt 4 Zeichen. Zwei separate Bytes führen nach Abschluss mit 2 Nullen zu 3 Base64-Zeichen, danach wird 1 "="-Zeichen hinzugefügt. Also insgesamt 4 Zeichen.

Basis58

Base58 im ursprünglichen Bitcoin-Quellcode

Base58 ist eine Variante von Base64, bei der 6 Zeichen weggelassen wurden: 0OIl /. Die Zeichenfolge lautet also:

ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz123456789.

Base58Check hat die gleichen Zeichen, aber mit den Zahlen voran:

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

wobei die Kodierung aufgrund einiger Prüfzeichen aus dem gleichen Zeichensatz etwas länger ist.

Letzteres wird unter anderem verwendet für a Bitcoin Adresse.

Siehe auch

  • Uuencode und BinHex, andere Möglichkeiten, Binärcode in ASCII zu konvertieren.
  • Inline-Bild, Verwenden von base64 zum Einfügen eines Bildes HTMLCode unterzubringen.

Externe Links