Im folgenden Beispiel (caesar1.java) wird eine Zeichenkette von der Tastatur eingelesen. Anschließend werden alle Buchstaben in Großbuchstaben verwandelt. Dann findet die Verschiebung um eine bestimmte (gleich bleibende) Anzahl von Buchstaben im Alphabet statt. Schließlich wird der verschlüsselte Text in eine Textdatei ausgegeben.
import java.io.*; public class caesar1 { static byte geheim[] = new byte[100]; public static void main (String args[]) throws IOException{ InputStreamReader datenstrom = new InputStreamReader(System.in); BufferedReader dateneingabe = new BufferedReader(datenstrom); String s = dateneingabe.readLine(); verschluessle(s, args[0]); ausgabe(); } public static void verschluessle (String s, String a) { geheim = s.getBytes(); for (int i=0;i<geheim.length;i++) { if (geheim[i]>90) geheim[i]-=32; geheim[i]+=Integer.parseInt(a); if (geheim[i]>=90) geheim[i]-=26; } } public static void ausgabe () { String s=""; for (int i=0;i<geheim.length;i++) { char interim = (char) geheim[i]; s+= interim; } System.out.println("\n" + s); } }
Im Programm wird die Zahl, um die alle Zeichen verschoben werden sollen, beim Aufruf als Befehlszeilenargument übergeben (args[0]. Der Klartext wird über die Standard-Eingabe eingegeben. Damit erhalten wir beispielsweise folgenden Programmlauf:
alfred@duron:~/java/kurs> java caesar1 3 Informatik ist schoen LQIRUPDWLN#LVW#VFKRHQ
Wie man sich leicht überlegen kann, ist die Verschiebechiffre sehr leicht zu knacken. Man braucht höchstens 26 Versuche, um den Chiffretext wieder in Klartext zu verwandeln:
alfred@duron:~/java/kurs> java caesar1 23 LQIRUPDWLN#LVW#VFKRHQ INFORMATIK:IST:SCHOEN
Im Durchschnitt ist nur die halbe Anzahl von Versuchen, nämlich 13, notwendig, um die Chiffre zu entschlüsseln. Damit ist eine ernstzunehmende Verschlüsselung mit einer Verschiebechiffre unmöglich.