a | b | |
---|
| 0 | + | package AffCh; |
---|
| 0 | + | |
---|
| 0 | + | import java.util.*; |
---|
| 0 | + | |
---|
| 0 | + | public class BruteForce { |
---|
| 0 | + | |
---|
| 0 | + | ArrayList<String> ergebnisse = new ArrayList(); |
---|
| 0 | + | Data daten = new Data(); |
---|
| 0 | + | |
---|
| 0 | + | public BruteForce(String userEingabe) { |
---|
| 0 | + | |
---|
| 0 | + | int[] cryp = convertString(userEingabe); |
---|
| 0 | + | int[] decryp = new int[cryp.length]; |
---|
| 0 | + | |
---|
| 0 | + | // itteration über die inversen |
---|
| 0 | + | |
---|
| 0 | + | for (int i = 0; i < daten.inverse.length; i++) { |
---|
| 0 | + | |
---|
| 0 | + | // itteration über die möglichen additionen |
---|
| 0 | + | for (int j = 0; j < daten.addition.length; j++) { |
---|
| 0 | + | System.out.println("Das aktuelle Schlüsselpaar ist:" + " " |
---|
| 0 | + | + "(" + daten.inverse[i] + "," + daten.addition[j] + ")"); |
---|
| 0 | + | // entschüsseln jedes characters |
---|
| 0 | + | |
---|
| 0 | + | for (int j2 = 0; j2 < cryp.length; j2++) { |
---|
| 0 | + | decryp[j2] = decrypeChar(cryp[j2], daten.inverse[i], |
---|
| 0 | + | daten.addition[j], daten.modulo); |
---|
| 0 | + | } |
---|
| 0 | + | //Ergebnisstring in eine Liste schreiben |
---|
| 0 | + | ergebnisse.add(convertInt(decryp)); |
---|
| 0 | + | |
---|
| 0 | + | |
---|
| 0 | + | }// ende additionen |
---|
| 0 | + | |
---|
| 0 | + | }// ende inversen |
---|
| 0 | + | |
---|
| 0 | + | |
---|
| 0 | + | } |
---|
| 0 | + | /* |
---|
| 0 | + | *Die Funktion zum Dechiffrieren |
---|
| 0 | + | */ |
---|
| 0 | + | |
---|
| 0 | + | |
---|
| 0 | + | public int decrypeChar(int buchstabe, int inverse, int addition, int modulo) { |
---|
| 0 | + | |
---|
| 0 | + | int ergebnis = (inverse * (buchstabe - addition)) % modulo; |
---|
| 0 | + | |
---|
| 0 | + | return ergebnis; |
---|
| 0 | + | } |
---|
| 0 | + | |
---|
| 0 | + | |
---|
| 0 | + | /* |
---|
| 0 | + | *String in seine Kodierungswerte übersetzen |
---|
| 0 | + | */ |
---|
| 0 | + | public int[] convertString(String eingabe) { |
---|
| 0 | + | |
---|
| 0 | + | int[] convertToInt = new int[eingabe.length()]; |
---|
| 0 | + | |
---|
| 0 | + | if (eingabe != null) { |
---|
| 0 | + | |
---|
| 0 | + | for (int i = 0; i < eingabe.length(); i++) { |
---|
| 0 | + | |
---|
| 0 | + | switch (eingabe.charAt(i)) { |
---|
| 0 | + | |
---|
| 0 | + | case 'a': |
---|
| 0 | + | |
---|
| 0 | + | convertToInt[i] = 0; |
---|
| 0 | + | |
---|
| 0 | + | break; |
---|
| 0 | + | |
---|
| 0 | + | case 'b': |
---|
| 0 | + | |
---|
| 0 | + | convertToInt[i] = 1; |
---|
| 0 | + | |
---|
| 0 | + | break; |
---|
| 0 | + | |
---|
| 0 | + | |
---|
| 0 | + | |
---|
| 0 | + | case 'z': |
---|
| 0 | + | |
---|
| 0 | + | convertToInt[i] = 25; |
---|
| 0 | + | |
---|
| 0 | + | break; |
---|
| 0 | + | |
---|
| 0 | + | case ' ': |
---|
| 0 | + | |
---|
| 0 | + | convertToInt[i] = 26; |
---|
| 0 | + | |
---|
| 0 | + | break; |
---|
| 0 | + | |
---|
| 0 | + | default: |
---|
| 0 | + | System.err.println("Kein Gültiger CHARACTER!!!"); |
---|
| 0 | + | break; |
---|
| 0 | + | } |
---|
| 0 | + | |
---|
| 0 | + | } |
---|
| 0 | + | |
---|
| 0 | + | } else { |
---|
| 0 | + | System.err.println("Noch kein String eingegeben!!!"); |
---|
| 0 | + | } |
---|
| 0 | + | |
---|
| 0 | + | return convertToInt; |
---|
| 0 | + | } |
---|
| 0 | + | /* |
---|
| 0 | + | *Integerwerte zu einem KlartextString zusammenbasteln |
---|
| 0 | + | */ |
---|
| 0 | + | public String convertInt(int[] a) { |
---|
| 0 | + | String ergebniss = null; |
---|
| 0 | + | |
---|
| 0 | + | for (int j = 0; j < a.length; j++) { |
---|
| 0 | + | |
---|
| 0 | + | switch (a[j]) { |
---|
| 0 | + | |
---|
| 0 | + | case 0: |
---|
| 0 | + | |
---|
| 0 | + | ergebniss += 'a'; |
---|
| 0 | + | |
---|
| 0 | + | break; |
---|
| 0 | + | |
---|
| 0 | + | case 1: |
---|
| 0 | + | |
---|
| 0 | + | ergebniss += 'b'; |
---|
| 0 | + | |
---|
| 0 | + | break; |
---|
| 0 | + | |
---|
| 0 | + | //Auf grund der lesefreundlichkeit, fehlen die restlichen buchstaben |
---|
| 0 | + | |
---|
| 0 | + | case 25: |
---|
| 0 | + | |
---|
| 0 | + | ergebniss += 'z'; |
---|
| 0 | + | |
---|
| 0 | + | break; |
---|
| 0 | + | |
---|
| 0 | + | case 26: |
---|
| 0 | + | |
---|
| 0 | + | ergebniss += ' '; |
---|
| 0 | + | |
---|
| 0 | + | break; |
---|
| 0 | + | |
---|
| 0 | + | default: |
---|
| 0 | + | System.err.println("Keine Gültige ZAHL!!!"); |
---|
| 0 | + | break; |
---|
| 0 | + | } |
---|
| 0 | + | } |
---|
| 0 | + | |
---|
| 0 | + | return ergebniss; |
---|
| 0 | + | } |
---|
| 0 | + | |
---|
| 0 | + | } |
---|
... | |
---|