33.7 Verschlüsselung nach Vigenère
 


Blaise Vigenère
(1523-?)

Bei einer monoalphabetischen Substitution wird jeder Buchstabe eineindeutig auf einen Buchstaben abgebildet, d.h., wird der Buschstabe 'a' durch 'f' verschlüsselt, so wird jeder im Klartext vorkommende Buchstabe 'a' durch 'f' ersetzt. Weiter sichert die Eineindeutigkeit zu, dass kein anderer Buchstabe als 'a' durch 'f' verschlüsselt wird. In der Verschlüsselung nach Cäsar hatten wir für ein Beispiel. Beim Vigenère – Verfahren handelt es sich nun um eine sogenannte polyalphabetische Substitution. Dabei werden bis zu 26 Geheimtextalphabe, abhängig vom Schlüssel, abwechselnd verwendet.  Diese entsprechen genau allen möglichen Geheimtextalphabeten der Caesar-Chiffrierung. Das Wort 'poly' zeigt an, dass es jetzt möglich ist, dass der Buchstabe 'a' einmal mit 'f', an einer anderer Stelle des Klartextes durch 'm' ersetzt wird. Wie geht nun dieses nach Blaise Vigenère benannte Verfahren konkret?

Man benötigt zunächst ein Schlüsselwort, das man Zeichen für Zeichen über den Klartext schreibt und dabei sooft wiederholt, bis er den ganzen Klartext "überschreibt". In unserem Beispiel haben wir als Schlüsselwort "LICHT" und als Klartext "truppenabzugnachosten" gewählt.

L I C H T L I C H T L I C H T L I C H T L
t r u p p e n a b z u g n a c h o s t e n

Zum Verschlüsseln benutzt man nun das sog. Vigenère-Quadrat:

  um den ersten Buchstaben 't' zu verschlüsseln, verwendet man den ersten Buchstaben des Schlüssels 'L'. Wir suchen in obersten Zeile nach 't', und merken uns diese t-Spalte. Danach suchen wir die Zeile , in der das 'L' in der ersten Spalte steht, wir nenne Sie L-Zeile. Im Schnitt der L- Zeile und der t-Spalte steht der verschlüsselte Buchstabe: 'E'.

L I C H T L I C H T L I C H T L I C H T L
t r u p p e n a b z u g n a c h o s t e n
E Z W W I P V C I S F O P H V S W U A X Y

Wie die Buchstaben p in truppen.... zeigen, wird nicht mehr ein Buchstabe auf immer denselben Buchstaben abgebildet. Das erste 'p' wird zu 'W' und das zweite 'p' zu 'I' verschlüsselt. Und schließlich kann es sein, dass zwei verschiedene Buchstaben zu ein und demselben Buchstaben verschlüsselt werden. In truppen..  werden die Buchstaben 'u' und 'p' auf 'W' abgebildet. Man beachte, dass die Verschlüsselungstechnik trotzdem umkehrbar eindeutig ist.

 
Übung Verschlüsseln Sie 'per Hand' den Text: "vigenereverschluesselnistbesseralscaesar". Verwenden Sie als Schlüsselwort 'java'.

Lösung:
"
EIBEWEMEEEMSLHGUNSNEUNDSCBZSBEMAUSXANSVR"
 

Die Verschlüsselung nach Vigenère ist also eine etwas komplexere Art der Cäsarverschlüsselung. In unserem letzten Beispiel wird das 'V' (wir nehmen die Großbuchstaben) wegen des Schlüsselbuchstabens 'J' um 9 verschoben (siehe die Zeilennummerierung im Vigenèrequadrat. Der zweite Buchstaben wird wegen des zweiten Schlüsselbuchstabens 'A' nicht verschoben, der dritte wegen 'V' um 21 usw. Ab dem 4ten Buchstaben wiederholen sich die Verschiebungen. Man kann sich denken, dass die Länge des Schlüsselwortes entscheidend ist für die Qualität der Verschlüsselung.

Wir fügen unserer Klasse Krypt.java die Methode

+ vigenere(String originalText, String schluessel): String

zu (Übuing).
 

Die Methode zum Vigenère-Verschlüsseln
(Lösung)
public static String vigenere(String originalText, 
                              String schluessel){
  originalText = originalText.toUpperCase();
  schluessel = schluessel.toUpperCase();
  String geheimText = "";
  for (int i = 0, j = 0; i < originalText.length(); i++, j++){
  //i ist der Zähler für den Originaltext
  //j ist der Zähler für das Schlüsselwort
  if( j == schluessel.length()) j = 0; 
  //wenn Schlüsselwort durchlaufen, wieder von vorne im Schlüssel
    geheimText += (char)((originalText.charAt(i)+ 
                          schluessel.charAt(j)-130)%26+65);
  }
  return geheimText;
}

 

Download:
Krypt.java (upgarde)
KryptTest.java
public class KryptTest {

  public static void main (String[] args) {
     String originalText = "truppenabzugnachosten";
     String schluessel = "licht";
     System.out.println(originalText);
     System.out.println(Krypt.vigenere(originalText,schluessel));
  }
}
zu 33.8 Übung zum Entschlüsseln nach Vigenère
zur Startseite www.pohlig.de  (C) MPohlig 2004