Dieser Teil beschäftigt sich ein wenig mit der Problematik der Blockverschlüsselung
Bei einer Blockverschlüsselung ist die Gefahr das der gesammte Text offen gelegt werden kann größer. Kennt der Angreifer z.B. die Größe des Blockes und konnte ein Teil des Textes entschlüsseln, so kann er einfach nach Schema f im Abstand der Blockgröße weitere Teile entschlüsseln. Es bedarf dann nicht mal einer Anstrengung. Man kann nun mit verschiedenen Mitteln versuchen dies zu verhindern. (Wobei - wenn es wirklich drauf ankommt - würde ich PGP nehmen;)
Einer meiner Versuche, die ich noch als Quelltext in C vorliegen habe (in Assembler gab es da noch bessere ;) war, einfach den bereits Kodierten Text als Schlüssel weiter zu verwenden wenn der Vorrat ausgegangen ist. Der Nachteil dieser Methode ist jedoch, das man zum Kodieren eine andere Routine benötigt als zum Dekodieren. Sicherer ist dies deswegen nicht, es liegt daran, das dieses Verfahren asymetrisch ist.
Das Kodieren war ja schnell umgesetzt. Die erste Schleife kodiert n Zeichen und läßt dabei einen Zähler auf dem letzten Wert stehen. Danach wird geprüft, ob noch Text vorhanden ist der Kodiert werden muß. Wenn ja wird einfach die zweite Schleife ausgeführt.
Das Dekodieren viel mir nicht mehr ganz so leicht. Ich gehe selten Rückwärts an ein Problem heran, und ich hatte auch etwas Experimentieren müssen um zum Ziel zu kommen.
Als erstes wird in der Routine der Offset berechnet. Bis zum Offset wird der Kodierte Text rückwärts dekodiert, da die vorderen Bytes, auch wenn sie nicht mit dem Schlüssel
Kodiert wurden, benötigt werden.
xxx -> Kodert mit Key
yyy -> folgecodierung
a -> Offset (textlänge - schlüssellänge-1)
z -> Key
b -> End bzw. Startposition
Rückwärts dekodieren
a b
xxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
a b
xxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
a b
xxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
a b
xxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
Der rest muß mit dem Key rekonstruiert werden.
z b
xxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z b
xxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
z b
xxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
XNOR2 Routine (Zum Download Schift-Taste gedrückt halten)