BruteForce einer affinen Chiffre in Java

Hallo ihr lieben,

ich versuche gerade eine Java-Programm zu schreiben, welches mir eine affine Chiffre brutforcen soll.
Dies entspricht einer Hasuaufgabe die mir gestellt wurde ;)

Die Aufgabe soll so gelößt werden, dass jedes mögliche Schlüsselpaar durchgetestet werden soll (also bruteforce oder ? ^_^ )

Ich habe zudem noch Hinweise bekommen, ohne die würde es auch nicht klappen glaube ich. :D

Hinweise:

Kodierung: a->0; b->1;...; z->25; SPACE->26

Aus der Kodierung folgt -> 27 Zeichen im Alphabet

Desweiteren soll das wort affinen im Klartext enthalten sein.

Soweit zu dem Input den ich bekommen habe....

Nun zu meinen Vorüberlegungen:

Erstmal habe ich überlegt wie wird eigentlich ver- und entschlüsselt:

Verschlüsseln -> Chiffretext = (a * Buchtabe + b) modulo 27

Wobei:
- a eine Primzahl zwischen 0 und 27 sein muss
- b eine belibige zahl zwischen 0 und 27
- der Buchstabe durch seine zahl repräsentiert wird
- modulo 27 weil es 27 Zeichen im Alphabet sind

Raus kommt natürlich eine zahl die in der Kodierung einen Anderen Buchstaben Repräsentiert

Entschlüsseln -> Klartext = ( a^-1 * ( ChiffreBuchstabe - b ) modulo 27

Wobei:
- a^-1 das multiplikatieve inverse von a ist
- b bleibt b

Rauskommen müsste die Repräsentation des Klartextbuchstaben in der Kodierung

So weit so gut ...

Nun hab ich mir überlegt welche möglichen Schlüsselpaare gibt es denn ?

Nun meine Ergebniss: Alle paare aus multiplikatieven Inversen zwischen 0 und 27 -> { 1, 9, 21, 15, 3, 19, 7, 23, 11, 5, 17, 25, 27} und den belibigen zahlen zwischen 0 und 27

Das hab ich dann Folgendermaßen umgesetzt:


Fixe Daten die sich nicht ändern:
http://www.friendpaste.com/5qxNTpJqbbrRAjA0rqbxpu

Der Bruteforce:
http://www.friendpaste.com/5CjMjlY8mk9rpWh252tR7Z

Der Aufruf des Ganzen/Die Mainmethode:
http://www.friendpaste.com/5dg7hCTdewzDP3fTfqjjqV

Nun habe ich festgestellt, das ich Irgendwo einen denkfehler haben muss. Das ganze läuft noch nicht richtig.

Wäre nett wenn mir jemand einen Denkanstoß geben könnte oder einen Tipp wo ich etwas vilt nicht richtig implementiert habe.

LG

WhiTeY
 
Zurück
Oben