Kleines Nachschlagewerk Informatik
Vigenere-Verschlüsselung
Worum geht es?
Caesar ist einfach, aber auch sehr leicht zu knacken. Man braucht also eine Verschlüsselung, die fast genau so einfach anzuwenden ist, aber deutlich schwerer zu knacken ist. Die Lösung besteht in der Anwendung verschiedener Caesar-Verschlüsselungen.
Verschlüsselung
Die Caesar-Verschlüsselung lässt sich leicht knacken, weil es reicht, einen Buchstaben zu kennen. Wenn sich aber die Verschiebung bei jedem Buchstaben ändert, wird es schwieriger, weil der Buchstabe E mal als D, mal als U oder als X auftauchen kann.

Man braucht dann nur noch ein System, mit dem auch mathematisch unbedarfte Mitbürger sich einfach die wechselnden Verschiebungen merken können. Das erledigt man mit einem Codewort.

Das Codewort sei OMA. O steht für die Verschiebung 14, M fur 12 und A fur 0. Der erste Buchstabe wird mit 14, der zweite mit 12, der dritte gar nicht verschoben. Dann geht alles wieder von vorn los.

Zur Verschlüsselung nimmt man gern quadratische Tabellen. Am folgenden Bild kann man leicht die Verschlüsselung des Textes LINUX mit dem Codewort OMA erkennen.



Vereinfachung
Es erfolgt keine Unterscheidung von Groß- und Kleinbuchstaben, Leerzeichen kann man wieder weglassen.
Umsetzung
Hat man die Caesar-Verschlüsselung, ist es einfach. Man packt diese einfach in eine Schleife, die aus dem Codewort die Verschiebung ermittelt und diese fortlaufend auf alle Buchstaben des Rohtextes anwendet.

Die Variable text enthält den originalen Text, der verschlüsselte Text landet in neu und die Verschiebung wird aus dem Inhalt von codewort berechnet.

      i = 0
      j = 0
      neu = ""
      text = mache Großbuchstaben(text)
      solange i < Länge von text
          c = i-tes Zeichen von text
          // Alle "Nichtbuchstaben" ignorieren
          wenn c >= 'A' und c <= 'Z'
              verschiebung = j-tes Zeichen von codewort - 'A'
              j = j + 1
              wenn j = Länge von codewort
                  j = 0
              c = c + verschiebung
              wenn c > 'Z'
                  c = c - 'A'
              neu = neu + c
          i = i + 1
      Ausgabe neu
            
Entschlüsseln
Hat man das Codewort (weil man der rechtmäßige Empfänger der Nachricht ist), dann gestaltet sich die Entschlüsselung wieder einfach. Man errechnet aus dem Codewort alle Verschiebungen und wendet diese fortlaufend an oder man nutzt, was übersichtlicher ist, das oben gezeigte Quadrat.