
Ferner sei nochmals ausdrücklich darauf hingewiesen, dass Zusatzaufgaben in der Regel über den Stand der Vorlesung hinausgehen und für Leute gedacht sind, die noch Anregungen für eigene Experimente brauchen. 100 Prozent der Übungspunkte bleiben auch für jene erreichbar, die keine Zusatzaufgaben machen.
Paul P. Lanlos sitzt ganz schön in der Patsche. Zuerst hat er sich eine Digitalkamera aufschwatzen lassen, die grade mal Fotos mit 50 Kilopixel zustande bringt. In Schwarzweiß.
Und jetzt, da er seine ersten Urlaubsfotos von der Schwäbischen Alb seiner übergewichtigen Freundin Berta B. Reit schicken will, fällt ihm ein, dass Bilder mit fetten Linien gar nicht so gut sind für sie.
Doch glücklicherweise kennt er Sie! Sie werden ihm nun helfen, die Bilder ein wenig leichtgewichtiger zu machen.
Werfen wir zunächst einen Blick auf die Bilder. Sie liegen im PBM-Format (portable bitmap) vor, von dem es wiederum eine ASCII- und eine Raw-Variante gibt.
Die ASCII-Variante sieht folgendermaßen aus: In der ersten Zeile
steht lediglich ,,P1``, in der zweiten die Breite
und
Höhe
des Bildes in Pixeln. Danach folgen
Nullen
oder Einsen, wobei eine ,,1`` für ein schwarzes und
,,0`` für ein weißes Pixel steht. Ein
Beispiel:
P1 16 4 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0
Deutlich kompakter kommt die Raw-Variante daher. Sie beginnt mit der Kennung
,,P4`` und nennt ebenfalls
und
. Nach einem weiteren
Newline-Zeichen folgt der Datenblock, in dem kein strukturierender Whitespace
mehr erlaubt ist1:
P4 16 4 <<xxððÿàWenn wir aus diesem Datenblock Zeichen für Zeichen lesen, erhalten wir als erstes ein
<, das laut ASCII-Tabelle
(siehe man ascii) dem Wert
x mit dem Wert
a.out < schaf-asc.pbm > ergebnis.pbm
Dabei soll jedes schwarze Pixel durch ein weißes ersetzt werden und umgekehrt. Geben Sie zur Kontrolle die Breite und Höhe über stderr (!) aus, und melden Sie auf diesem Wege auch, wenn die Eingabedatei nicht dem erwarteten Format entspricht.
Wenn Ihr Programm eine sinnvolle Ausgabe zu erzeugen scheint, können Sie diese auch direkt an das Bildbearbeitungsprogramm xv weiterleiten:
a.out < schaf.pbm | xv -Einige Testbilder finden Sie auf der Vorlesungshomepage. Sie können davon ausgehen, dass die Breiten aller Testbilder ein Vielfaches von 8 sind.
^ nützlich sein. Damit das
Ausgabebild die Breite des Eingabebildes behält, vergleichen Sie das erste
Pixel einer Zeile mit ,,weiß``.)
RSA in einem Satz erklärt: Sind drei Zahlen (ein
Verschlüsselungsexponent
, ein Entschlüsselungsexponent
sowie
ein Modul
) geeignet gewählt, so lässt sich eine Botschaft in
Form einer Ganzzahl
mit der Abbildung
chiffrieren und mit
wieder
dechiffrieren.
Normalerweise ist
so groß, dass die gesamte Nachricht in
untergebracht
werden kann. Wir wollen jedes Zeichen einzeln codieren, das heißt, wir wählen
für
einfach das jeweils eingelesene Zeichen und wenden die
Chiffriervorschrift darauf an.3
int modPow(int a, int x, int m)welche
24027 11520 5356 14399 1054 24725
20253 268 24027 1054 17220 14399
26786 1496 20253 12261 12261 12560
1054 25489 11931 19835 22816
Viel Erfolg!