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

Bedienungsanleitung:

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!



Bitte speichern Sie zunächst die Programmdatei

Kryptografie_klassisch(r-krell.de).jar (18 kB)

auf Ihrem Computer und starten ("öffnen") Sie dann die herunter geladene Datei durch Anklicken.
Am besten schieben Sie danach das geöffnete Programmfenster nach oben links,
sodass Sie gleichzeitig diese Seite lesen können.

Mehr zum Start von Java-Programmen als Application (und nicht mehr als Applet) auf meiner Extraseite Übersicht über meine Java-Programme - Appletprobleme und Downloads, die in einem neuem Tab Ihres Browsers geöffnet wird.



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 (seit 2017 nicht mehr sinnvoll, da Applets nicht mehr unterstützt)
  {
    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 https://www.r-krell.de.