Ich hatte vor einigen Jahren für verschiedene meiner damaligen Java-Bücher ein einfaches Kodierungsprogramm konzipiert, das ich dann in den verschiedensten Varianten in den Büchern durchgespielt hatte.
Einmal natürlich zur Demonstration von Dateizugriffen mit Java sowie Programmierlogik (also im Wesentlichen Versionen, die auf Konsolenebene gearbeitet haben) und dann als Erweiterung mit einer GUI (zur Demonstration von verschiedenen Techniken mit dem AWT und vor allen Dingen Swing).
Im Rahmen meiner aktuellen Java-Schulung habe ich nun die letzten 2 Wochen ein Praktikum meiner Teilnehmer betreut. Und dafür habe ich als ein Beispiel mein altes Kodierungsprogramm wieder aufgewärmt und parallel zu den Lösungsansätzen meiner Kursteilnehmer selbst eine neue Variante auf Basis von Swing und RandomAccessFile weiterentwickelt.
Hier ist der Download einer ausführbaren Version von dem Programm als JAR-Datei
Das Java-Programm ist natürlich vollkommen plattformneutral und öffnet damit unter jedem Betriebssystem mit einer passenden JVM eine beliebige Datei (über einen JFileChooser). Dabei werden die Daten nach dem Einlesen dann wieder in eine andere Datei geschrieben, deren Name und Ort Sie natürlich frei wählen können.
Die Daten werden vor dem Rausschreiben natürlich auf nützliche Art und Weise verarbeiten.
Dazu wird ein Verschlüsselungs- und Entschlüsselungalgorithmus implementiert, der auf einer Verschiebung der Zeichenkodierung basiert. Der verwendete Algorithmus ist auf Grundlage der Cäsar-Chiffre konzipiert. Dies ist ein einfacher Verschiebungsalgorithmus. Diese Verschlüsselungsmethode lautet wie folgt: für jeden im Quelltext vorkommendes Zeichen setze im Chiffretext einen um einen festen Parameter versetztes Zeichen. Wenn beispielsweise im Quelltext der erste Buchstabe des Alphabetes – ein „A“ – auftaucht und der Verschlüsselungsparameter „3“ ist (angeblich der von Cäsar benutzte Parameter), wird im Chiffretext der vierte Buchstabe des Alphabetes – ein „D“ – genommen, usw. Die Dekodieren geht genau umgekehrt.
Die Verschiebung ist übrigens im Programm über einen Slider frei wählbar und sämtliche Angaben an das Programm werden auf über eine GUI übergeben (JSlider, JOptionPanel, JFileCooser, JButton, JMenuBar, etc.). Ebenso ist das Programm gegen fehlerhafte Verwendung abgesichert. So findet etwa vor dem Erstellen der neuen Datei eine Kontrolle statt, ob die zu erstellende Datei evtl. schon vorhanden ist. In diesem Fall muss der Anwender bestätigen, dass die Zieldatei überschrieben wird.
Zugegebenermaßen ist die angewendete Technik zur Verschlüsselung sehr einfach, bei binären Dateien ist die einfache Cäsar-Chiffre trotzdem wirkungsvoll. Durch die bereits in der Quelldatei vorkommenden Steuerzeichen ist ein Erraten der verwendeten Konstanten extrem erschwert. Überdies kann man alleine durch eine solche Verschiebung von Zeichen automatische Spionagetools in einem Netzwerk (etwa dem Internet) austricksen, die Texte nach bestimmten Kennworten (etwa Geheimzahl oder Kreditkartennummer) scannen.
Hier ist der Download einer ausführbaren Version von dem Programm als JAR-Datei