/** * Erstellt ein neues Alphabet, das aus einem String und einem umgedrehten Alphabet besteht. * * @param key der String * @param alphabet das Alphabet * @return ein neues Alphabet */ public static Alphabet fillAlphabet(String key, Alphabet alphabet) { int AlphabetZahler = 0; // Erstellt einen Zähler. char[] keyArray = key.toCharArray(); // Wandelt den String in ein char Array um. char[] ergebnis = new char[alphabet.size()]; // Erstellt ein zweites Array vom Typ char. Utils test = new UtilsClass(); // Erstellt ein Objekt vom Typ Utils. boolean found = false; // Erstellt ein Boolean und initialisiert den Boolean mit false. if (alphabet.size() + key.length() < alphabet.size()) { throw new IllegalArgumentException( "Das neue Alphabet würde weniger Zeichen beinhalten, als das vorherige"); } for (int i = 0; i < key.length(); i++) { ergebnis[i] = keyArray[i]; // Das Array "ergebnis" wird mit dem String befüllt. AlphabetZahler += 1; // Der Zähler wird um 1 erhöht. } for (int i = 0; AlphabetZahler < alphabet.size(); i++) { for (int k = 0; k < ergebnis.length; k++) { // Überprüfen ob der Buchstabe aus dem Alphabet schon in dem Array vorhanden if (ergebnis[k] == test.reverseAlphabet(alphabet).getChar(i)) { // ist. found = true; // Der Boolean wird auf true gesetzt. } } if (found == false) { // Wenn der Buchstabe nicht vorhanden ist: ergebnis[AlphabetZahler] = test.reverseAlphabet(alphabet) .getChar( i); // Der Rest von dem Array "ergebnis" wird mit Buchstaben aus dem Alphabet // befüllt. AlphabetZahler += 1; // Der Zähler wird um 1 erhöht. } found = false; } Map<Integer, Character> alphabetmap = new HashMap<Integer, Character>(); // Erstellen einer neuen Map (leer) for (int i = 0; i < alphabet.size(); i++) { // Alle Elemente aus dem Array "ergebnis" werden in der Map eingefügt. alphabetmap.put(i, ergebnis[i]); } Alphabet KeywordAlphabet = new AlphabetClass( alphabetmap.values()); // alphabetmap.values() gibt Collection<Character> zuürck return KeywordAlphabet; }
/** * Erstellt aus einem Schluesselword und einem Klartext Alphabet das Verschluesselungs Alphabet. * * @param keyWord Das Schluesselwort * @param a Das Klartext Alphabet * @return Das Verschluesselungs Alphabet. */ private static Alphabet createDestAlphabet(String keyWord, Alphabet a) { char[] array = keyWord.toCharArray(); ArrayList<Character> list = new ArrayList<Character>(); for (char c : array) { list.add(c); } Utils util = new UtilsImpl(); Alphabet reversedAlphabet = util.reverseAlphabet(a); for (Character c : reversedAlphabet) { if (!list.contains(c)) list.add(c); } return new AlphabetImpl(list.subList(0, a.size())); }