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.
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
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.

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