Link zu Doug Hellmanns Original Artikel
| Zweck: | Das base64 Modul enthält Funktionen zur Übersetzung von Binärdaten in eine Untermenge des ASCII Zeichensatzes. Diese können bei Übertragungen mittels Klartext Protokollen genutzt werden. |
| Python: | ab 1.4 |
Die base64, base32 und base16 Zeichenkodierungen konvertieren 8 Bit Bytes zu Werten mit 6, 5 und 4 Bits Nutzdaten pro Byte, welches Nicht-ASCII Bytes erlaubt als ASCII Zeichen kodiert zu werden und von Klartextprotokollen, wie SMTP, übertragen zu werden. Die Basiswerte korrespondieren zu den Längen der Alphabete, die in den jeweiligen Zeichenkodierungen verwendet werden. Es gibt auch URL-sichere Varianten der Originalkodierungen, die leicht abweichende Ergebnisse benutzen.
Ein einfaches Beispiel für die Kodierung eines Textes sieht wie folgt aus:
Die Ausgabe zeigt wie die 558 Bytes der Originalquelle auf 744 Bytes nach der Verschlüsselung erweitert wurden.
558 Bytes vor der Verschlüsselung Erwarte 0 Füll-Bytes 744 Bytes nach der Verschlüsselung IyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiMgZW5 jb2Rpbmc6IHV0Zi04CiMKIyBDb3B5cmlnaH QgKGMpIDIwMDggRG91ZyBIZWxsbWFubiBBb GwgcmlnaHRzIHJlc2VydmVkLgojCiIiIgoi IiIKCl9fdmVyc2lvbl9fID0gIiRJZDogYmF zZTY0X2I2NGVuY29kZS5weSAxNTI1IDIwMD gtMDctMjAgMTM6MjM6MzVaIGRoZWxsbWFub iAkIgojZW5kX3B5bW90d19oZWFkZXIKCmlt cG9ydCBiYXNlNjQKCmluaXRpYWxfZGF0YSA 9IG9wZW4oX19maWxlX18sICdydCcpLnJlYW QoKQoKZW5jb2RlZF9kYXRhID0gYmFzZTY0L mI2NGVuY29kZShpbml0aWFsX2RhdGEpCgpu dW1faW5pdGlhbCA9IGxlbihpbml0aWFsX2R hdGEpCnBhZGRpbmcgPSB7IDA6MCwgMToyLC AyOjEgfVtudW1faW5pdGlhbCAlIDNdCgpwc mludCAnJWQgYnl0ZXMgYmVmb3JlIGVuY29k aW5nJyAlIG51bV9pbml0aWFsCnByaW50ICd FeHBlY3QgJWQgcGFkZGluZyBieXRlcycgJS BwYWRkaW5nCnByaW50ICclZCBieXRlcyBhZ nRlciBlbmNvZGluZycgJSBsZW4oZW5jb2Rl ZF9kYXRhKQpwcmludApwcmludCBlbmNvZGV kX2RhdGEK
Der verschlüsselte String kann in das Original zurück konvertiert werden, indem 4 Bytes in die ursprünglichen 3 Bytes konvertiert werden. Die b64decode() Funktion erledigt dies für Sie.
Der Verschlüsselungsprozess schaut bei den Eingabedaten nach jeder Sequenz von 24 Bits und verschlüsselt diese verteilt über 4 Bytes. Die letzten beiden Zeichen, die == sind Füllzeichen, da die Anzahl der Bits im Originaltext nicht durch 24 teilbar waren.
Original: 'Das sind die Daten im Klartext. Verschlüsselt : RGFzIHNpbmQgZGllIERhdGVuIGltIEtsYXJ0ZXh0Lg== Entschlüsselt : This is the data, in the clear
Da das Standard base64 Alphabet die Zeichen + und / verwendet und diese beiden Zeichen in URLs genutzt werden, ist es erforderlich geworden, alternative Verschlüsselungen für diese zu finden. Das + wird durch - ersetzt und der / wird durch einen (_) ersetzt. Ansonsten bleibt das Alphabet unverändert.
Standard Verschlüsselung: ++8= URL-erhaltende Verschlüsselung: --8= Standard Verschlüsselung: //8= URL-erhaltende Verschlüsselung: __8=
Neben base64, stellt das Modul Funktionen für base32 und base16 (hex) verschlüsselte Daten bereit.
Original: Das sind die Daten im Klartext. Encoded : IRQXGIDTNFXGIIDENFSSARDBORSW4IDJNUQEW3DBOJ2GK6DUFY====== Decoded : Das sind die Daten im Klartext.
Die base16 Funktionen arbeiten mit dem hexadezimalen Alphabet.
Original: Das sind die Daten im Klartext. Verschlüsselt : 4461732073696E642064696520446174656E20696D204B6C6172746578742E Entschlüsselt : Das sind die Daten im Klartext.
Siehe auch
Die Dokumenation der Standardbibliothek für dieses Modul.
Die Base16, Base32 und Base64 Daten Verschlüsselungen.
In der Übersetzung