Ein weiterer Versuch den Effekt der Blockkodierung zu umgehen war es, den Schlüssel selbst zu verändern. Hierfür setzte ich die Schift Routine ein. rorb(). Ob dies dadurch sicherer wird weiß ich nicht. Vielleicht wird eine Kryptoanalyse vereinfacht ? Ich hab es nie untersucht. (Wüßte auch nicht so recht wie das geht;) Ich hatte die Routine auch eine zeitlang so, daß der Rotationslevel für jedes einzelne Byte neu erzeugt wurde. Dann wurde noch rechts oder links schieben entschieden. Es gab dabei jedoch Probleme die ich nicht dokumentiert habe....

Die Idee ist es, den Schlüssel künstlich zu strecken. Für diesen Zweck werden die einzelnen Bytes des Keys rotiert. Der Rotationsfaktor (Anzahl der Bit um die geschoben wird) wird aus dem Schlüssel selbst ermittelt. Der vorhergehende Rotationsfaktor wird als Offset verwendet. (Schwäche - immer eines der ersten 7 Bytes und das ist einer der entscheidenden Schwächen der Routine). Dieses Byte wird um 4 Bits nach rechts geschoben. Um anschließend sicher zu stellen, das sich der Zahlenbereich zwischen 1 und 7 befindet, wird erst mit %00001111 UND verknüpft und anschließend mit %00000001 ODER verknüpft. Jedes einzelne Bytes des Schlüssels wird mit dem hier ermittelten Wert nach rechts rotiert. Es wäre eine Überlegung wert, ob man nicht den Schlüssel zwischen speichern sollte. Man könnte dann den alten und den rotierten Schlüssel mit XNOR verknüpfen und diesen weiter verwenden. Da ich , wie gesagt, zu wenig Kenntnisse in Kryptologie habe kann ich jedoch nicht beurteilen ob es Sinn macht. Wenn ich näheres weiß werde ich das mal testen.

ANMERKUNG: Diese Routine setze ich überall da ein wo der Schlüssel rekativ kurz gehalten ist. Jedoch erfordert die Routine eine Mindestlänge von 8 Bytes des Keys!!!! (Man könnte dies aber noch umschreiben ;)

XNOR3 Routine (Zum Download Schift-Taste gedrückt halten)