Skip to main content

Funktionsweise der Base64-Kodierung

H.264 Part 1: Encoding & Decoding Basics (April 2025)

H.264 Part 1: Encoding & Decoding Basics (April 2025)
Anonim

Wenn das Internet die Datenautobahn ist, ist der Pfad für E-Mails eine enge Schlucht. Nur sehr kleine Karren können passieren.

Das E-Mail-Transportsystem ist nur für reinen ASCII-Text ausgelegt. Der Versuch, Text in anderen Sprachen oder beliebigen Dateien zu senden, ist wie ein Lastwagen durch die Schlucht zu fahren.

Wie geht der Big Truck durch die Schlucht?

Wie schickt man dann einen großen Lastwagen durch eine kleine Schlucht? Sie müssen es am einen Ende in Stücke zerlegen, die Stücke durch die Schlucht transportieren und den Lastwagen aus den Teilen am anderen Ende umbauen.

Dasselbe passiert, wenn Sie einen Dateianhang per E-Mail senden. In einem als Codierung bekannten Prozess werden die binären Daten in ASCII-Text umgewandelt, der problemlos in E-Mails transportiert werden kann. Auf der Empfängerseite werden die Daten decodiert und die Originaldatei wird neu erstellt.

Eine Methode zum Codieren beliebiger Daten als ASCII-Text ist Base64. Es ist eine der Techniken, die der MIME-Standard verwendet, um andere Daten als Nur-Text zu senden.

Base64 zur Rettung

Die Base64-Kodierung benötigt drei Bytes, die jeweils aus acht Bits bestehen, und stellt sie im ASCII-Standard als vier druckbare Zeichen dar. Dies geschieht im Wesentlichen in zwei Schritten.

Der erste Schritt besteht darin, drei Bytes in vier Zahlen von sechs Bits umzuwandeln. Jedes Zeichen im ASCII-Standard besteht aus sieben Bits. Base64 verwendet nur 6 Bits (entsprechend 2 ^ 6 = 64 Zeichen), um sicherzustellen, dass verschlüsselte Daten druckbar und für Menschen lesbar sind. Keines der in ASCII verfügbaren Sonderzeichen wird verwendet.

Die 64 Zeichen (daher der Name Base64) bestehen aus 10 Ziffern, 26 Kleinbuchstaben, 26 Großbuchstaben sowie '+' und '/'.

Wenn die drei Bytes beispielsweise 155, 162 und 233 sind, ist der entsprechende (und erschreckende) Bitstrom 100110111010001011101001, was wiederum den 6-Bit-Werten 38, 58, 11 und 41 entspricht.

Diese Zahlen werden im zweiten Schritt unter Verwendung der Base64-Codierungstabelle in ASCII-Zeichen umgewandelt. Die 6-Bit-Werte unseres Beispiels werden in die ASCII-Sequenz "m6Lp" übersetzt.

  • 155 -> 10011011
  • 162 -> 10100010
  • 233 -> 11101001
  • 100110 -> 38
  • 111010 -> 58
  • 001011 -> 11
  • 101001 -> 41
  • 38 -> m
  • 58 -> 6
  • 11 -> L
  • 41 -> p

Dieser zweistufige Prozess wird auf die gesamte codierte Bytefolge angewendet. Um sicherzustellen, dass die verschlüsselten Daten ordnungsgemäß gedruckt werden können und die Zeilenlänge der Mail-Server nicht überschreiten, werden Zeilenumbrüche eingefügt, um die Zeilenlänge unter 76 Zeichen zu halten. Die Zeilenvorschubzeichen werden wie alle anderen Daten codiert.

Endgame lösen

Am Ende des Kodierungsprozesses könnten wir auf ein Problem stoßen. Wenn die Größe der Originaldaten in Byte ein Vielfaches von drei ist, funktioniert alles einwandfrei. Wenn dies nicht der Fall ist, erhalten wir möglicherweise ein oder zwei 8-Bit-Bytes. Für eine korrekte Kodierung benötigen wir jedoch genau drei Bytes.

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

Natürlich können diese künstlichen nachfolgenden Nullen nicht mit der folgenden Codierungstabelle codiert werden. Sie müssen durch ein 65. Zeichen dargestellt werden.

Das Base64-Füllzeichen ist '='. Natürlich kann es immer nur am Ende von verschlüsselten Daten erscheinen.

Base64-Codierungstabelle

WertVerkohlen WertVerkohlen WertVerkohlen WertVerkohlen
0EIN 16Q 32G 48w
1B 17R 33h 49x
2C 18S 34ich 50y
3D 19T 35j 51z
4E 20U 36k 520
5F 21V 37l 531
6G 22W 38m 542
7H 23X 39n 553
8ich 24Y 40O 564
9J 25Z 41p 575
10K 26ein 42q 586
11L 27b 43r 597
12M 28c 44s 608
13N 29d 45t 619
14O 30e 46u 62+
15P 31f 47v 63/