MATHEMATISCHES INSTITUT DER UNIVERSITÄT MÜNCHEN Dr. W. Spann, G. Kleen SS 2023

Programmieren I für Studierende der Mathematik

Aufgabe 9

Die Base64-Codierung dient dazu, Daten mit nicht druckbaren Zeichen so umzuwandeln, dass lediglich bestimmte druckbare Zeichen vorkommen und der Informationsgehalt erhalten bleibt. Dabei vergrößert sich allerdings die Datenmenge um ein Drittel.

Jeweils 3 Zeichen (zu 1 Byte) werden als Gruppe von 4 6-Bit-Einheiten aufgefasst. Jeder 6-Bit-Einheit ist über ihren Zahlwert ein druckbares Zeichen zugeordnet, das sich aus der folgenden Tabelle ergibt.

Wert Zeichen
0 - 25 A - Z
26 - 51 a - z
52 - 61 0 - 9
62  +
63  /

Ist die Zahl der Eingabebytes nicht durch 3 teilbar, so wird in der Ausgabe die sich am Ende ergebende unvollständige 6-Biteinheit mit Nullbits aufgefüllt und ein bzw. zwei Gleichheitszeichen angehängt, um zu einer vollständigen Vierergruppe zu gelangen.

Bsp.:  a → YQ==    ab → YWI=    abc → YWJj

In der Ausgabe soll jeweils nach spätestens 76 Zeichen (19 Vierergruppen) ein Zeilenumbruch vorgenommen werden.

(a) Erstellen Sie ein Programm, das eine Binärdatei liest, den Inhalt in Base64 codiert und in eine Textdatei schreibt. Lesen Sie die beiden Dateinamen ein.

(b) Erstellen Sie ein weiteres Programm für die umgekehrte Richtung.

Decodieren und (re)codieren Sie die folgenden Base64-Ausgaben:

  (i) RGllc2VyIFRlc3Qgd2FyIGVyZm9sZ3JlaWNoLg==
 (ii) U29taXQgd3VyZGVuIHNvd29obCBkZXIgZXJzdGUgYWxzIGF1Y2ggZGVyIHp3ZWl0ZSBUZXN0IGVy
     Zm9sZ3JlaWNoIGR1cmNoZ2Vmw7xocnQu

Bearbeitungszeitraum: bis Freitag, 7.7.2023, 12^{00}