Beliebte Beiträge Auf Dem Pc Und Software

Top Artikel Auf Internet - 2018

Wie Base64 Encoding funktioniert

Wenn das Internet das ist Informationsautobahn, dann ist der Pfad für E-Mail eine enge Schlucht. Nur sehr kleine Wagen können passen.

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

Wie geht der große Lastwagen durch die Schlucht?

Wie schickt man dann einen großen Lastwagen durch eine kleine Schlucht? Du musst es an einem Ende zerlegen, die Teile durch die Schlucht transportieren und den Lastwagen aus den Teilen am anderen Ende wieder aufbauen.

Dasselbe passiert, wenn du einen Dateianhang per E-Mail sendest. In einem Prozess, der als Codierung bekannt ist, werden die Binärdaten in ASCII-Text umgewandelt, der problemlos in E-Mails transportiert werden kann. Auf der Empfängerseite werden die Daten dekodiert und die Originaldatei wird neu erstellt.

Eine Methode zum Kodieren beliebiger Daten als einfacher ASCII-Text ist Base64. Es ist eine der Techniken, die vom MIME-Standard verwendet werden, um andere Daten als reinen Text zu senden.

Base64 für die Rescue

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

Der erste Schritt besteht darin, drei Bytes in vier Zahlen zu je 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 die codierten Daten druckbar und lesbar sind. Keines der in ASCII verfügbaren Sonderzeichen wird verwendet.

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

If für B. sind die drei Bytes 155, 162 und 233, der entsprechende (und beängstigende) Bitstrom ist 100110111010001011101001, was wiederum den 6-Bit-Werten 38, 58, 11 und 41 entspricht.

Diese Zahlen werden in ASCII konvertiert Zeichen im zweiten Schritt mithilfe der Base64-Codierungstabelle. Die 6-Bit-Werte unseres Beispiels übersetzen in die ASCII-Sequenz "m6Lp".

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

Diese zwei Schritt Prozess wird auf die gesamte Sequenz von Bytes angewendet, die codiert sind. Um sicherzustellen, dass die codierten Daten korrekt gedruckt werden können und die Zeilenlängenbeschränkung eines Mail-Servers nicht überschreiten, werden Zeilenumbrüche eingefügt, um die Zeilenlänge unter 76 Zeichen zu halten. Die Newline-Zeichen werden wie alle anderen Daten codiert.

Endgame lösen

Am Ende des Encodiervorgangs könnte ein Problem auftreten. Wenn die Größe der ursprünglichen Daten in Bytes 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 Codierung 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 solche Werte werden angehängt, wenn wir ein zusätzliches Byte Daten haben, eines wird für zwei zusätzliche Bytes angehängt.

Natürlich können diese künstlichen schleppenden '0's nicht unter Verwendung der Codierungstabelle unten codiert werden. Sie müssen durch ein 65. Zeichen dargestellt werden.

Das Auffüllzeichen Base64 ist '='. Natürlich kann es immer nur am Ende der codierten Daten vorkommen.

Base64 Encoding Table

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 n 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 /

Senden Sie Ihren Kommentar