23.21 Übungen (und die Ergebnisse) |
|
Übung 1 |
Erzeugen Sie public und private key
für eine RSA-Verschlüsselung. Schreiben Sie u.U. kleine Java-Programme,
die das Auffinden erleichtert. |
Download: Erathostenes. java NichtGem Teiler.java |
Beispiel: Mit Hilfe des 'Sieb des Erathostenes', das Programm haben wir in Kap. 15.4 kennen gelernt, lassen wir uns z.B. alle Primzahlen bis 300 aufzeigen. Wir wählen etwa p = 227 und q = 281. Ihr Produkt ist n = 63787. Die Hilfsgröße z = (p-1)(q-1) = 226.281 = 63280. Wir suchen nun eine Zahl e, deren Wert kleiner als z ist und mit die mit z keinen Teiler gemeinsam hat. Dazu dient das Programm: NichtGemTeiler.java. Man gibt eine Zahl ein und es werden in 10er Paketen die Zahlen ausgegeben, die mit der eingegebenen Zahl keinen Teiler gemeinsam haben. Wir wählen eine davon aus, etwa e = 267. Das Programm PrivateKey.java erzeugt uns Zahlen, die der in 23.19 beschrieben Bedingung für den private Key d genügen. Wir wählen etwa d = 63043. Wir haben somit den public Key (63787, 267) und den private Key (63787, 63043). |
Übung 2 |
In der Regel werden Daten nicht direkt
von Konsole in ein Programm eingegeben, sondern über ein Eiungabefenster
einer GUI. Implementieren Sie in den Klassen EnKrypt und DeKrypt die
Methoden rsa(...) mit den folgenden Sinaturen: rsa(String originalText, String n, String e): String bzw rsa(String geheimText, String n, String d): String Die 'alten' Methoden sollten zu rsa(String originalText, double n, double e): String bzw. rsa(String geheimText, double n, double d): String umgeschrieben werden. Ihr Methodenrumpf wird sehr einfach, wenn man die neuen Methoden (also die, die nur String-Objekte in den Parameterlisten besitzen) verwendet.
Schreiben Sie eine GUI
JDemoRSA
für die rasa(...)-Methoden in den Klassen EnKrypt und DeKrypt. Das Design
ist durch das Bild unten vorgegeben. |
Download: EnKrypt.java DeKrypt.java |
Die Methoden in EnKrypt
Die zweite rsa(...)-Methode ruft lediglich die erste rsa(...)-Methode auf. Das hat den Vorteil, dass Veränderungen (im Algorithmus nur einmal gemacht werden muss. Redundanzen und Fehler werden damit weitgehend vermieden. Eine Bemerkung noch zu new Long(n).toString() in der Parameterliste. Uns steht der Wert des einfachen Datentyps long zu Verfügung, etwa 17. Wir benötigen aber den String "17". Dazu müssen wir die Zahl 17, im allgemeinen also n als Objekt der Klasse Long erzeugen. Mit new Long(n) haben wir ein solches anonymes Objekt erzeugt (Das Objekt heißt anonym, da es keinen Bezeichner gibt, über den man auf das Objekt zugreifen könnte, was wir ja auch gar nicht wollen) . Schließlich rufen wir für dieses anonyme Objekt die Long - Methode toString() auf. Die rsa(...)-Methoden in der Klasse
DeKrypt sind entsprechend implementiert und werden deshalb hier nicht
extra aufgeführt. |
|
|
Download: JDemoRSA. java |
|
Aufgabe 1 |
Fügen Sie in den Klassen
EnKrypt
und DeKrypt
zu allen Methoden die als Schlüsselobjekt kein
String-Objekt
verwenden die entsprechenden Methoden hinzu, so dass es für alle
implementierten Ver- bzw. Entschlüsselungsmethoden eine Variante gibt, in
der neben den Texten auch die Schlüssel als
String-Objekte
übergeben werden können. |
Aufgabe 2 |
Verschlüsseln Sie wie oben dargestellt
den Text 'Java ist toll' mit dem öffentlichen Schlüssel (2773, 17)
Kopieren Sie den Geheimtext (Markieren un dann kopieren mit Strg+C)
in den Editor von WindowsTM und speichern Sie den Text ab.
Öffnen sie diese Datei erneut im Editor kopieren Sie ihn und fügen Sie ihn
in das Eingabefeld vom Geheimtext ein (Strg+V) und entschlüsseln den
Text. Wiederholen Sie den ganzen Vorgang speichern Sie den Text im Editor
jetzt aber im Unicode-Format ab. Können Sie sich einen Reim darauf machen? |
Aufgabe 3 | Die geheime Botschaft in der Datei GeheimeBotschaft.txt ist mit dem public Key (N = 1739; e = 5). Versuchen Sie den Text zu entschlüsseln. Da N nicht groß ist, dürfte die Entschlüsselung keine Probleme machen. |
zu der Lösung | 23.21 Lösungen zu den Aufgaben |
zu |
24 Rechner und Logik 24.1 Boolsche Funktionen |
zur Startseite | www.pohlig.de (C) MPohlig 2005 |