Vor Jahren, als die Mailing-Funktionalität eingeführt wurde, war sie noch rein textbasiert, doch im Laufe der Zeit kam der Bedarf an Anhängen wie Bildern und Medien (Audio, Video usw.) auf. Wenn diese Anhänge über das Internet verschickt werden (im Wesentlichen in Form von Binärdaten), ist die Wahrscheinlichkeit, dass die Binärdaten in ihrer Rohform beschädigt werden, hoch. Um dieses Problem in den Griff zu bekommen, wurde BASE64 entwickelt.
Das Problem bei Binärdaten ist, dass sie Null-Zeichen enthalten, die in einigen Sprachen wie C, C++ das Ende einer Zeichenkette darstellen. Das Senden von Binärdaten in Rohform, die NULL-Bytes enthalten, führt dazu, dass eine Datei nicht vollständig gelesen werden kann und die Daten beschädigt werden.
Zum Beispiel:
In C und C++ zeigt dieses "Null"-Zeichen das Ende einer Zeichenkette an. So wird "HELLO" wie folgt gespeichert:
H E L L O
72 69 76 76 79 00
Der 00 sagt "hier anhalten".
Nun wollen wir uns ansehen, wie die BASE64-Kodierung funktioniert.
Zu beachtende Punkte: Die Länge der Zeichenkette sollte ein Vielfaches von 3 sein.
Beispiel 1 :
Zu kodierende Zeichenfolge : "ace", Länge=3
- Konvertieren Sie jedes Zeichen in eine Dezimalzahl.
a= 97, c= 99, e= 101
- Ändern Sie jede Dezimalzahl in eine 8-Bit-Binärdarstellung.
97= 01100001, 99= 01100011, 101= 01100101
Kombiniert : 01100001 01100011 01100101
- Getrennt in einer Gruppe von 6-Bit.
011000 010110 001101 100101
- Binär nach Dezimal berechnen
011000= 24, 010110= 22, 001101= 13, 100101= 37
- Konvertierung dezimaler Zeichen in base64 mithilfe der base64-Tabelle.
24= Y, 22= W, 13= N, 37= l
"ace" => "YWNl"
Beispiel 2 :
Zu kodierende Zeichenkette: "abcd" Länge=4, kein Vielfaches von 3. Um die Länge der Zeichenkette auf ein Vielfaches von 3 zu bringen, müssen wir 2 Bits hinzufügen, damit die Länge= 6 ist. Das Auffüllungsbit wird durch das Zeichen "=" dargestellt.
Zu beachtende Punkte: Ein Padding-Bit entspricht zwei Nullen 00, zwei Padding-Bits entsprechen vier Nullen 0000.
Beginnen wir also den Prozess :-
- Konvertieren Sie jedes Zeichen in eine Dezimalzahl.
a= 97, b= 98, c= 99, d= 100
- Ändern Sie jede Dezimalzahl in eine 8-Bit-Binärdarstellung.
97= 01100001, 98= 01100010, 99= 01100011, 100= 01100100
- Getrennt in einer Gruppe von 6-Bit.
011000, 010110, 001001, 100011, 011001, 00
Da die letzten 6 Bits nicht vollständig sind, fügen wir zwei Auffüllbits ein, die vier Nullen "0000" ergeben.
011000, 010110, 001001, 100011, 011001, 000000 ==
Jetzt ist es gleich. Zwei Gleichheitszeichen am Ende zeigen, dass 4 Nullen addiert wurden (hilft bei der Entschlüsselung).
- Berechnen Sie binär nach dezimal.
011000= 24, 010110= 22, 001001= 9, 100011= 35, 011001= 25, 000000=0 ==
- Konvertierung dezimaler Zeichen in base64 mit Hilfe der base64-Tabelle.
24= Y, 22= W, 9= j, 35= j, 25= Z, 0= A ==
"abcd" => "YWJjZA=="
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."