www.r-krell.de
Webangebot für Schule und Unterricht, Software, Fotovoltaik und mehr

Willkommen/Übersicht  >  Informatik  >  Informatik mit Java, Teil j)   >  Kryptografie-Programm


klassische Kryptografie

Nach dem Webstart erscheint links oben das Kryptografie-Programm in einem Extra-Fenster:

Verfahren wählen, dann Klar- oder Geheimtext eingeben/überschreiben,
Zusatzinfo/Schlüssel eintippen (für Vigenère ist eine reine Buchstabenkombination
von mindestens 1 Zeichen Länge - aber besser länger! - erforderlich)
und erst danach Ver- oder Entschlüsseln drücken!

Wenn die Java-JRE installiert ist, können Sie das Programm jetzt sofort ausführen:

Hier klicken zum Webstart des Kryptografie-Programms

Danach Öffnen von Kryptografie.jnlp [mit Java(TM) Webstart Launcher (Standard)] wählen/bestätigen
und bei evtl. Sicherheitswarnung vor der Ausführung von CryptoRahmenStart das Risiko akzeptieren und OK drücken.

Wenn Sie außerdem gefragt werden, ob Sie eine Desktop- und eine Startmenüverknüpfung anlegen wollen,
sollten Sie zustimmen, wenn Sie das Programm auch nach Verlassen dieser Webseite nochmal ausprobieren wollen.

Wird nach dem Klick Kryptografie.jnlp herunter geladen oder werden Sie gefragt, womit Sie Kryptografie.jnlp öffnen wollen
oder ob/wohin Sie die Datei speichern wollen, haben Sie entweder kein Java installiert oder ihr Browser (z.B. Opera) unterstützt keinen Webstart.
Im letzten Fall empfiehlt sich nachfolgend der Download der .jar-Datei:

Sie können das Testprogramm für die klassische Kryptografie auch als ausführbare Java-Datei Kryptografie_klassisch(r-krell.de).jar (18 kB) herunter laden und später lokal auf Ihrem Rechner starten (Java-Umgebung JRE vorausgesetzt). Die Ausführung als Applet im Browser wird von mir hingegen nicht mehr angeboten: Gründe, Abhilfe und alle Downloads (in neuem Tab)



Nachfolgend der Quelltext des Programms, soweit nicht bereits auf der "Informatik-mit-Java"-Seite j) dargestellt:

Die Quelltexte zu den verschiedenen Verfahren sind bereits auf der Seite j): Kryptologie I angegeben (mit Ausnahme des Playfair-Verfahrens, das hier als Bonus integriert ist und sich von den anderen Verfahren nicht nur wegen der Verwendung von ausschließlich 25 Großbuchstaben, sondern auch dadurch unterscheidet, dass es keinen Schlüssel braucht bzw. kennt. Ist von einem Geheimtext einmal bekannt, dass er Playfair-verschlüsselt wurde, kann er sofort entschlüsselt werden, da hier die Sicherheit in der Geheimhaltung des Verfahrens statt in der Verwendung eines geheimen Schlüssels lag).


zum Inhaltsverzeichnis (oben) / zum Seitenende

Startdatei für den Start des Kryptografie-Programms als Application oder als Applet

// Rahmen für Kryptgrafie-Programme. Krell, 27.9.2010/23.1.2011 für IF 13M bzw. www.r-krell.de

public class CryptoRahmenStart extends java.applet.Applet
{
  
public static void main (String[] s)
  {
    CryptoRahmen cr = 
new CryptoRahmen();
    cr.führeAus();
  }
  
  
public void init()    // Start als Applet
  {
    CryptoRahmen cr = 
new CryptoRahmen();
    cr.führeAus();
  }
}


zum Inhaltsverzeichnis (oben) / zum Seitenende


Programmtext der Oberfläche

// Rahmen für Kryptografie-Programme. Krell, 27.9.2010/20.1.2011 für IF 13M bzw. www.r-krell.de

import java.awt.*;
import java.awt.event.*;

public class CryptoRahmen extends Frame implements ItemListener
  
// Frame ist die Fensterklasse; ItemListener für addItemListener und itemStateChanged
{

  
// Anfang Attribute
  private Button btVerschlüsseln, btEntschlüsseln;        // Vorsilben wie lb, bt, tf und ta vor den Namen
  private TextField tfKlartext, tfGeheimtext, tfZusatz;   // sollen auf die Art des Objekts hinweisen!
  private CheckboxGroup cbg1 = new CheckboxGroup();
  
private Checkbox cbSkytale, cbCäsar, cbVerschiebewort, cbVigenere, cbPlayfair;
  
  CryptoAction ca = 
null;  // CryptoAction ist ein Interface, das die Existenz der beiden
    // Methoden "String verschlüssele (String klartext, String zusatz)" und
    // "String entschlüssele (String geheimtext, String zusatz)" verspricht.
  // Ende Attribute


  // Anfang Methoden
  
  
public void itemStateChanged (ItemEvent e)  // für Radiobutton-Auswahl; cbg = check button group
    // Zur Laufzeit wird ein Verfahren ausgewählt
    // *** Noch nicht existierende Verfahren zunächst auskommentieren! ***
  {
    
if (cbg1.getSelectedCheckbox().equals(cbSkytale))
    {
      ca = 
new CryptoSkytaleII();
    }
    
else if (cbg1.getSelectedCheckbox().equals(cbCäsar))
    {
      ca = 
new CryptoCaesar();
   }
    
else if (cbg1.getSelectedCheckbox().equals(cbVerschiebewort))
    {
      ca = 
new CryptoVerschiebewort();
    }
    
else if (cbg1.getSelectedCheckbox().equals(cbVigenere))
    {
      ca = 
new CryptoVigenere();
    }
    
else if (cbg1.getSelectedCheckbox().equals(cbPlayfair))
    {
      ca = 
new CryptoPlayfair();
      tfZusatz.setText(
"** Für Playfair unnötig **");
    }
  }

  
private void richteFensterEin() // Fenster initalisieren und beschreiben
  {
    
//WindowsListener hinzufügen, damit Schließsymbol 'x' funktioniert
    addWindowListener (
      
new WindowAdapter ()
      {
        
public void windowClosing (WindowEvent ereignis)
        {                
//ersetzt bisher leere Methode
          setVisible (false);
          dispose();
          System.exit(
0);
        }
      }
    ); 
// runde Klammer vom Windowlistener geschlossen;

    setTitle("Kryptografie (www.r-krell.de)"); // Fenster mit Titel versehen
    setSize (620,160); //Fenstergröße (Breite und Höhe in Pixeln)festlegen
    // könnte auch später in führeAus() vor Layout- und add(..)-Befehlen stehen
  }

  
private void richteKnöpfeEin()
  {
    btVerschlüsseln  = 
new Button ("Verschlüsseln");
    
// oder: .. = new Button(); btKnopf.setLabel ("Knopf-Beschriftung");

    //Funktion der Knöpfe festlegen
    btVerschlüsseln.addActionListener (
      
new ActionListener ()
      {
        
public void actionPerformed (ActionEvent e)
        {
          
// Klartext mit klar = tfKlartext.getText() holen,
          // verschlüsseln und Ergebnis als Geheimtext ausgeben:
          if (ca==null)
          {
            tfGeheimtext.setText(
"** Vorm Verschlüsseln erst Verfahren wählen! **");
          }
          
else
          {
            tfGeheimtext.setText(ca.verschlüssele(tfKlartext.getText(), tfZusatz.getText()));
            
// Kann fehlerfrei kompiliert werden, da ca die Existenz von verschlüssele.. verspricht
          }
        }
      }); 
// runde Klammer (von addActionListener)


    btEntschlüsseln  = new Button ("Entschlüsseln");
    
// oder: .. = new Button(); btKnopf.setLabel ("Knopf-Beschriftung");

    //Funktion der Knöpfe festlegen
    btEntschlüsseln.addActionListener (
      
new ActionListener ()
      {
        
public void actionPerformed (ActionEvent e)
        {
          
// Geheimtext mit geheim = tfGeheimtext.getText() holen,
          // entschlüsseln und Ergebnis
          // mit tfKlartext.setText(ergebnis) anzeigen
          if (ca==null)
          {
            tfKlartext.setText(
"** Vorm Entschlüsseln erst Verfahren wählen! **");
          }
          
else
          {
            tfKlartext.setText(ca.entschlüssele(tfGeheimtext.getText(), tfZusatz.getText()));
            
// Kann fehlerfrei kompiliert werden, da ca die Existenz von entschlüssele.. verspricht
          }
        }
      }); 
// runde Klammer (von addActionListener)
   }

  
private void richteEingabezeilenEin()
  {
    tfKlartext   = 
new TextField("Das ist ein Probetext",50);
    tfGeheimtext = 
new TextField("",50);
    tfZusatz     = 
new TextField("",30);
    tfKlartext.setFont(
new Font("monospaced"012));
    tfGeheimtext.setFont(
new Font("monospaced"012));
  }
  
  
private void richteRadioknöpfeEin()
  {
    cbSkytale    = 
new Checkbox ("Skytale", cbg1, false);
    cbCäsar      = 
new Checkbox ("Cäsar", cbg1, false);
    cbVerschiebewort = 
new Checkbox ("mono m. Merkwort", cbg1, false);
    cbVigenere   = 
new Checkbox ("Vigenère", cbg1, false);
    cbPlayfair   = 
new Checkbox ("Playfair", cbg1, false);
    cbSkytale.addItemListener (
this);
    cbCäsar.addItemListener (
this);
    cbVerschiebewort.addItemListener (
this);
    cbVigenere.addItemListener (
this);
    cbPlayfair.addItemListener (
this);
  }

  
public void führeAus ()
  {
    richteFensterEin();        
// Aufruf der Methoden zum Erzeugen der
    richteKnöpfeEin();         // Bildschirmobjekte und der Definition
    richteEingabezeilenEin();
    richteRadioknöpfeEin();

    setLayout (
new FlowLayout()); // innere Unterteilung des Bildschirmfensters
    add (new Label ("       Klartext"));
    add (tfKlartext);
    add (btVerschlüsseln);
    add (
new Label ("Geheimtext"));
    add (tfGeheimtext);
    add (btEntschlüsseln);
    add (
new Label ("Benötigte Zusatzinfo (Umfang, Verschiebung, Schlüssel..)"));
    add (tfZusatz);
    add (cbSkytale);
    add (cbCäsar);
    add (cbVerschiebewort);
    add (cbVigenere);
    add (cbPlayfair);
    setVisible(
true);          // Macht Bildschirm mit allen angeordneten
      // Objekten sichtbar und startet damit das Programm
  }

  
// Ende Methoden
}




zum Inhaltsverzeichnis (oben) / zum Seitenende




zurück zur Seite „Informatik mit Java, Teil j)"




zum Anfang dieser Seite
Willkommen/Übersicht   -   Was ist neu?   -   Software   -   Mathematik   -   Physik   -   Informatik   -   Schule: Lessing-Gymnasium und -Berufskolleg   -   Fotovoltaik   -   & mehr   -   Kontakt: e-Mail,  News-Abo, Gästebuch, Impressum   -   Grußkarten, site map, Download und Suche

Diese Seite ist Teil des Webangebots http://www.r-krell.de. Sie können diese Seite per e-Mail weiter empfehlen (tell a friend).