25 One Time Pad 25.1 Verschlüsseln mit XOR |
||||||||||||||||
Auf der untersten Ebene eines Rechners
bestehen Daten, seien es Befehle oder Werte, immer aus einer Folge von
0-en
und
1-en. Erst eine Interpretation macht daraus eine Anweisung, eine
Ganzzahl, einen String etc. Die
0 und die
1 kann man aber auch als
die boolschen Werte wahr bzw. falsch
interpretieren, auf die man die von der Boolschen Algebra bekannten
logischen Operationen anwenden kann. Eine solche logische Operation die
zwei boolsche Werte zu einem neuen boolschen Wert verknüpft ist die
Operation XOR. Es handelt es sich um das 'ausschließliche oder'. Wir
wollen uns nun anschauen, wie wir mit XOR verschlüsseln können. |
||||||||||||||||
|
Definiert wird eine logische Operation
wie XOR über eine Tabelle. |
|||||||||||||||
Operative Definition von XOR |
|
|||||||||||||||
Dass es 'vernünftig ist, diese Operation XOR zu nennen, wird deutlich, wenn man die 1 als wahr und die 0 als falsch interpretiert. So wird aXORb genau dann wahr, wenn entweder a oder b wahr falsch sind. |
||||||||||||||||
Wie sieht nun eine Verschlüsselung mit
dieser logischen Operation aus? Wir nehmen eine Folge von 0en und 1en, sie
stellen den Originaltext dar. Etwa die 8 Zeichen:
01010101 Als Schlüssel wählen wir eine gleichgroße Folge von 0en und 1en, etwa 11001100 Den Geheimtext erhalten wir wenn wir die Vorschrift ci=mi XOR ki anwenden. wobei mi das i-te Zeichen im Originaltext und ki das i-te Zeichen im Schlüssel sind. Sie liefern über XOR mit einander verknüpft das , ci, das i-te Zeichen des Geheimtextes. In unserem Beispiel bekommen wir den Geheimtext 10011001 |
||||||||||||||||
Wir stellen ein kleines Programm dar,
das die Eingaben zweier Folge von 1en und 0en für den Originaltext und für
den Schlüssel erwartet. Aus den Eingaben werden Felder von
false-Werten
(falsch in Java) und
true-Werten
(wahr in Java) erzeugt. Aus den beiden Feldern wird der Geheimtext als
Feld von
false-
und true-Werten
nach dem oben beschrieben Algorithmus erzeugt. Diese Feld wird dann in
eine Folge von 0en und 1en konvertiert, ausgegeben. Bei der Eingabe des
Schlüssel ist darauf zu achten, dass seine Länge mindestens so groß ist,
wie die Länge des Originaltextes. |
||||||||||||||||
Download: XOR.java |
|
|||||||||||||||
Bemerkung zum Quellkode |
Bei der Deklaration eines Feldes aus
boolschen Werten, wird ohne explizite Initialisierung alle Werte auf
false
gesetzt, weshalb man nur die 1 an den entsprechenden Stellen als
true
setzen muss. Der XOR-Operator
hat in Java die Gestalt '^', |
|||||||||||||||
zu | 25.2 XOR - One Time Pad | |||||||||||||||
zur Startseite | www.pohlig.de (C) MPohlig 2006 |