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.