RSA-Verschlüsselung in Java


Einführung

Für die Adressdatenbank habe ich einen Schlüsselalgorithmus benötigt. Entstanden ist eine einfache Implementierung des RSA-Algorithmus.
RSA ist ein Algorithmus, dessen Wirkungsweise auf mathematischen Problemstellungen beruht, deren Lösung von Generationen von Mathematikern versucht, aber nie erzielt wurde. Man erzeugt auf eine bestimmte Weise zwei Schlüssel d und e, sowie eine Zahl n. Verschlüsselt wird die Information i mit der Formel x = i ^ e % n (sprich: i hoch e mod n). Entschlüsselt wird mit i = x ^ d % n. Die Schlüsselbreite beträgt je nach Anwendung bis 2048 Bits. Die zu verschlüsselnde Information wird einfach in Byteblöcke aufgeteilt, deren Länge der Schlüssellänge entspricht. Dann werden sukzessive alle Blöcke ver- bzw, entschlüsselt.

Eine gute Einführung zu Thema RSA gibt der Artikel "Die faszinierende Geschichte von Alice und Bob" von Mirko Matytschak.

Funktionsumfang

Für beide Versionen der Implementierung ist der Funktionsumfang identisch:

Version 2 für Java Version 5 und höher

Version 2 verwendet die ab Java Version 5 verfügbaren Generics für Klassen wie Vector, Iterator und ähnliche. Somit treten die lästigen Warnungen beim compilieren nicht mehr auf und die Implementierung wird Typesicher. Die folgende Tabelle enhält die Archive mit den Quellfiles und den Binarys:

Datei Größe

Inhalt

LongRSA_src_2_0_0.zip 42.053 Byte
  • Quellfiles des Paketes de.longsoft.RSA mit der RSA Verschlüsselung.
  • Quellfiles des Paketes de.longsoft.RSATest mit dem Swing-Testprogramm für die Schlüsselerzeugung und die String-Verschlüsselung sowie einem Kommandozeilentestprogramm für RSA-FilterStreams.
  • Quellfiles des Paketes de.longsoft.Utilities mit einigen Hilfsklassen für GUI.
LongRSA_bin_2_0_0.zip 49.741 Byte jar-Dateien mit dem kompilierten Klassen.

Zum selbst erzeugen gibt es zwei Möglichkeiten:

  1. Arbeiten mit einer IDE (z.B. Eclipse)
    In der IDE drei neue Projekte erzeugen, eins für LongRSA_2_0, eins für LongRSATest_2_0 und eins für Utilities_2_0. Alle Quellfiles inclusive Verzeichnisse in die src-Verzeichnisse der Projekte aufnehmen. In den Projektabhängigkeiten von LongRSATest_2_0 die anderen beiden Projekte eintragen. Für den Test die Klasse de.longsoft.LongRSATest.RSATest als main class eintragen. Compilieren und Starten.
  2. Arbeiten mit Ant
    Folgende Verzeichnisstruktur erzeugen:
    ./--+ release
          + debug
          + LongRSA
                + src
                + bin
    Das Archiv mit den Quellen in das src-Verzeichnis auspacken inclusive der in den zip-Files enthalten Pfade. Nacheinander in die drei Verzeichnisse mit den Quellfiles wechseln und 'ant release' aufrufen. Im bin-Verzeichnis werden die kompilierten Klassen abgelegt und im release-Verzeichnis die fertigen jar-Dateien. Ins release-Verzeichnis wechseln und Testprogramm mit

    'java -jar LongRSATest_2_0.jar'

    starten.

Und dann erscheint folgendes Testprogramm:

Mit JavaDoc (z.B. 'ant javadoc') kann eine HTML-Beschreibung des Paketes erzeugt werden.

Version 1 für Java bis Version 1.4.x

Version 1 die nicht Typsichere Version bei Klassen wie Vector und Iterator wie sie für Java bis Versin 1.4.x üblich waren. Beim Kompilieren unter Java ab Version 5.0 treten jede Menge Warnungen auf. Die folgende Tabelle enhält die Archive mit den Quellfiles und den Binarys:

Datei Größe

Inhalt

LongRSA_src_1_0_2.zip 21.287 Byte
  • Quellfiles des package de.LongSoft.RSA mit der RSA Verschlüsselung.
    Mit JavaDoc kann eine HTML-Beschreibung des package erzeugt werden.
  • Quellfiles des package de.LongSoft.RSATest mit dem Swing-Testprogramm für die Schlüsselerzeugung und die String-Verschlüsselung sowie einem Kommandozeilentestprogramm für RSA-FilterStreams.
LongRSA_bin_1_0_2.zip 16.054 Byte jar-Dateien mit dem kompilierten Klassen.

Zum selbst erzeugen gibt es zwei Möglichkeiten:

  1. Arbeiten mit einer IDE (z.B. Eclipse)
    In der IDE drei neue Projekte erzeugen, eins für LongRSA_1_0 und eins für LongRSATest_1_0. Alle Quellfiles inclusive Verzeichnisse in die src-Verzeichnisse der Projekte aufnehmen. In den Projektabhängigkeiten von LongRSATest_1_0 das andere Projekt eintragen. Für den Test die Klasse de.longsoft.LongRSATest.RSATest als main class eintragen. Compilieren und Starten.
  2. Arbeiten mit Ant
    Folgende Verzeichnisstruktur erzeugen:
    ./--+ release
          + debug
          + LongRSA
                + src
                + bin
    Das Archiv mit den Quellen in das src-Verzeichnis auspacken inclusive der in den zip-Files enthalten Pfade. Nacheinander in die zwei Verzeichnisse mit den Quellfiles wechseln und 'ant release' aufrufen. Im bin-Verzeichnis werden die kompilierten Klassen abgelegt und im release-Verzeichnis die fertigen jar-Dateien. Ins release-Verzeichnis wechseln und Testprogramm mit

    'java -jar LongRSATest_1_0_2.jar'

    starten.

Und dann erscheint folgendes Testprogramm:

Mit JavaDoc (z.B. 'ant javadoc') kann eine HTML-Beschreibung des Paketes erzeugt werden.


© Ralf Lange, longsoft Dresden
Kommentare und Anregungen: Webmaster Formular- letzte Änderung: 2008-07-03
Java und alle Java basierten Schutznamen und Logos sind Schutzmarken oder registrierte Schutzmarken von Sun Microsystems, Inc. in den USA und in anderen Ländern. Alle anderen erwähnten Firmen- und Produktnamen sind Schutzmarken oder registrierte Schutzmarken des jeweiligen Herstellers.