Wir ermitteln die Häufigkeit der vorkommenden Zeichen ähnlich wie in Abschnitt 6.3.1, ``Buchstaben zählen'' und geben die ermittelten Häufigkeiten mit Hilfe von *-Reihen aus:
import java.io.*; public class analyse { public static void main (String[] args) { File f = new File(args[0]); byte[] text = new byte[256]; int[] anzahl = new int[26]; int i; try { FileReader eingabestrom = new FileReader(f); BufferedReader eingabe = new BufferedReader(eingabestrom); String zeile = eingabe.readLine(); while (zeile != null) { text = zeile.getBytes(); for (i=0; i < text.length; i++) { if (text[i] > 90) text[i]-=32; anzahl[(text[i]-65)]++; } zeile = eingabe.readLine(); } for (i=0; i< 26; i++) System.out.println((char) (i+65) + ": " + anzahl[i] + "\t" + stern(anzahl[i])); } catch (IOException e) {;} } public static String stern(int zahl) { String s=""; for (int i=0; i<zahl; i++) s+="*"; return s; } }
Wir bestimmen die Buchstabenhäufigkeiten von Klar- und Chiffretext und vergleichen:
A: 4 **** | A: 0 |
B: 0 | B: 0 |
C: 2 ** | C: 0 |
D: 3 *** | D: 4 **** |
E: 14 ************** | E: 0 |
F: 2 ** | F: 2 ** |
G: 3 *** | G: 3 *** |
H: 5 ***** | H: 14 ************** |
I: 10 ********** | I: 2 ** |
J: 0 | J: 3 *** |
K: 2 ** | K: 2 ** |
L: 4 **** | L: 10 ********** |
M: 2 ** | M: 0 |
N: 8 ******** | N: 2 ** |
O: 3 *** | O: 4 **** |
P: 0 | P: 2 ** |
Q: 0 | Q: 8 ******** |
R: 9 ********* | R: 3 *** |
S: 7 ******* | S: 0 |
T: 9 ********* | T: 0 |
U: 2 ** | U: 9 ********* |
V: 0 | V: 7 ******* |
W: 0 | W: 9 ********* |
X: 0 | X: 2 ** |
Y: 0 | Y: 0 |
Z: 0 | Z: 0 |
Unschwer ist die Verschiebung der Buchstaben um 3 Stellen zu erkennen.