So funktioniert die Base64-Kodierung

Inhaltsverzeichnis:

So funktioniert die Base64-Kodierung
So funktioniert die Base64-Kodierung
Anonim

Base64-Kodierung ist ein Prozess zum Konvertieren von Binärdaten in ein ASCII-String-Format, indem diese Binärdaten in eine 6-Bit-Zeichendarstellung konvertiert werden. Die Base64-Kodierungsmethode wird verwendet, wenn Binärdaten wie Bilder oder Videos über Systeme übertragen werden, die für die Übertragung von Daten im Klartextformat (ASCII) ausgelegt sind.

Warum wird die Base64-Kodierung verwendet?

Die Notwendigkeit der Base64-Codierung ergibt sich aus den Problemen, die auftreten, wenn Medien im rohen Binärformat an textbasierte Systeme übertragen werden.

Da textbasierte Systeme (wie E-Mail) Binärdaten als eine Vielzahl von Zeichen interpretieren, einschließlich spezieller Befehlszeichen, werden viele der Binärdaten, die an Übertragungsmedien übertragen werden, von diesen Systemen falsch interpretiert und gehen verloren oder werden beschädigt den Übertragungsvorgang.

Image
Image

Eine Methode, diese Art von Binärdaten so zu codieren, dass solche Übertragungsprobleme vermieden werden, besteht darin, sie als reinen ASCII-Text im Base64-codierten Format zu senden. Dies ist eine der Techniken, die der MIME-Standard verwendet, um andere Daten als reinen Text zu senden.

Viele Programmiersprachen wie PHP und Javascript enth alten Base64-Kodierungs- und Dekodierungsfunktionen, um Daten zu interpretieren, die mit Base64-Kodierung übertragen werden.

Base64-Kodierungslogik

Base64-Codierung zerlegt Binärdaten in 6-Bit-Segmente von 3 vollen Bytes und stellt diese als druckbare Zeichen im ASCII-Standard dar. Dies geschieht im Wesentlichen in zwei Schritten.

Der erste Schritt besteht darin, den binären String in 6-Bit-Blöcke zu zerlegen. Base64 verwendet nur 6 Bits (entsprechend 2^6=64 Zeichen), um sicherzustellen, dass verschlüsselte Daten druckbar und für Menschen lesbar sind. Es werden keine der in ASCII verfügbaren Sonderzeichen verwendet.

Die 64 Zeichen (daher der Name Base64) sind 10 Ziffern, 26 Kleinbuchstaben, 26 Großbuchstaben sowie das Pluszeichen (+) und der Schrägstrich (/). Es gibt auch ein 65. Zeichen, bekannt als Pad, das das Gleichheitszeichen (=) ist. Dieses Zeichen wird verwendet, wenn das letzte Segment der Binärdaten keine vollen 6 Bits enthält.

Base64-Kodierungsbeispiel

Nehmen Sie zum Beispiel drei ASCII-Zahlen 155, 162 und 233. Diese drei Zahlen bilden einen Binärstrom von 100110111010001011101001. Eine Binärdatei, wie ein Bild, enthält einen Binärstrom, der aus Zehn- oder Hunderttausenden von Nullen besteht und Einsen.

Ein Base64-Encoder zerlegt zunächst den Binärstrom in Gruppierungen von sechs Zeichen: 100110 111010 001011 101001. Jede dieser Gruppierungen wird in die Zahlen 38, 58, 11 und 41 übersetzt.

Ein aus sechs Zeichen bestehender Binärstrom wandelt Binärzeichen (oder Basis-2) in Dezimalzeichen (Basis-10) um, indem jeder Wert, der durch eine 1 in der Binärsequenz repräsentiert wird, mit seinem Positionsquadrat quadriert wird. Beginnend von rechts nach links und beginnend bei Null stellen die Werte im Binärstrom 2^0 dar, dann 2^1, dann 2^2, dann 2^3, dann 2^4, dann 2^5.

Hier ist eine andere Betrachtungsweise. Von links beginnend ist jede Position 1, 2, 4, 8, 16 und 32 wert. Wenn die Binärzahl eine 1 im Schlitz hat, addieren Sie diesen Wert; Wenn es eine 0 im Steckplatz hat, haben Sie dies nicht. Der binäre String 100110 wird in die Dezimalzahl 38 umgewandelt: 02^01 + 12^1 + 12^2 + 02^3 + 02^4 + 12^5=0+2 +4+0+0+32.

Base64-Kodierung nimmt diesen binären String und zerlegt ihn in die 6-Bit-Werte 38, 58, 11 und 41.

Schließlich werden diese Zahlen unter Verwendung der Base64-Codierungstabelle in ASCII-Zeichen konvertiert. Die 6-Bit-Werte dieses Beispiels werden in die ASCII-Sequenz m6Lp. übersetzt

Verwenden der Base64-Konvertierungstabelle:

  • 38 ist m
  • 58 ist 6
  • 11 ist L
  • 41 ist p

Dieser zweistufige Prozess wird auf die gesamte codierte Binärzeichenfolge angewendet.

Um sicherzustellen, dass die codierten Daten richtig gedruckt werden können und die Zeilenlängenbegrenzung eines Mailservers nicht überschreiten, werden Zeilenumbruchzeichen eingefügt, um die Zeilenlänge unter 76 Zeichen zu h alten. Die Newline-Zeichen werden wie alle anderen Daten kodiert.

Der gesamte Zweck der Base64-Codierung, vom Hinzufügen von Padding zum Erh alten von 3-Byte-Binärsegmenten bis zum Konvertieren von Binärdaten in Text mithilfe der Base64-Tabelle, besteht darin, die Integrität der übertragenen Binärinformationen zu bewahren.

Base64-Kodierungstabelle

Die folgende Tabelle übersetzt alle 64 Zeichen, die in der Base64-Codierung verwendet werden.

Base64-Kodierungstabelle
Wert Char Wert Char Wert Char Wert Char
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

Das Endspiel lösen

Am Ende des Kodiervorgangs liegt möglicherweise ein Problem vor. Wenn die Größe der Originaldaten in Bytes ein Vielfaches von drei ist, funktioniert alles einwandfrei. Wenn dies nicht der Fall ist, können leere Bytes vorhanden sein. Für eine korrekte Codierung werden genau 3 Byte Binärdaten benötigt.

Die Lösung besteht darin, genügend Bytes mit dem Wert 0 anzuhängen, um eine 3-Byte-Gruppe zu erstellen. Zwei solcher Werte werden angehängt, wenn die Daten ein zusätzliches Datenbyte benötigen, einer wird für zwei zusätzliche Bytes angehängt.

Natürlich können diese künstlichen nachgestellten '0's nicht mit der folgenden Codierungstabelle codiert werden. Sie müssen durch ein 65. Zeichen dargestellt werden. Das Base64-Füllzeichen ist das Gleichheitszeichen (=) und wird am Ende der codierten Daten platziert.

Empfohlen: