# Caesar und Vigenère Verschlüsselung



## DenTureS (26. Feb 2008)

Hallo liebe User,

ich habe zur Zeit ein Softwareprojekt an unserer Schule zu laufen und wollte ein Programm in Java schreiben, welches mir ermöglicht einen Klartext durch Caesar und Vigenère zu kodieren und dekodieren zu können.

Ich habe schon 2 Choice eingebaut. Einen man zwischen Caesar und Vigenère auswählen kann und einen wo man auswählt ob man den Klartext kodieren oder dekodieren möchte.

Habe dann noch nen paar Buttons für Löschen und Starten und noch ein paar Text Areas für den Key, den Klar- und Geheimtext.


So nun zu meiner eigentlichen Frage. Also meine Caesar Verschlüsselung funktioniert, allerdings bekomm ich die Vigenère nicht wirklich hin.  Immer wenn ich den Key eingebe und den Klartext kodieren, bzw. dekodieren will, bleibt die Text Area mit dem Geheimtext leer =/

Ich gebe euch mal meinen Quelltext zu dem Programm. Könntet Ihr euch mal den Teil zu Vigenère angucken und mir dabei helfen, dass man den Klartext verschlüsseln und entschlüsseln kann?


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

public class Verschlüsselung
{
  public static void main (String args[])
  {
    WindowSpielerei F = new WindowSpielerei ("Paul");
    F.setVisible(true);
  }
}

class WindowSpielerei extends Frame
{
  Panel p1 = new Panel ();
  Button b1 = new Button ("!! Starten !!");
  Button b2 = new Button ("!! Löschen !!");
  Label l1 = new Label ("Kryptoprogramm");
  Label l2 = new Label ("Key:");
  Label l3 = new Label ("Klartext:");
  Label l4 = new Label ("Geheimtext:");
  Label l5 = new Label ();
  TextField t1 = new TextField (50);
  TextField t2 = new TextField (50);
  TextField t3 = new TextField (10);
  Choice c1 = new Choice();
  Choice c2 = new Choice();
  int n=10;

  public WindowSpielerei (String T)
  {
      this.setTitle(T);
      this.setSize(800,600);
      
      this.addWindowListener(new WindowAdapter()
         {
            public void windowClosing(WindowEvent e)               //alles nur zum schließen des fensters
           {
             System.exit(0);
           }
         });

      setBackground(Color.black);

      add(p1);

      l1.setForeground(Color.red);
      add(l1);
      l1.setBounds(350,40,100,25);
      
      l2.setForeground(Color.red);
      add(l2);
      l2.setBounds(50,200,50,25);
      
      add(t1);
      t1.setBounds(120,200,50,25);

      c1.setBackground(Color.red);
      add(c1);
      c1.addItem("Caesar-Verschlüsselung");
      c1.addItem("Viregené-Verschlüsselung");
      c1.setBounds(50,130,175,25);
      
      c2.setBackground(Color.red);
      add(c2);
      c2.addItem("Kodierung");
      c2.addItem("Dekodierung");
      c2.setBounds(250,130,175,25);

      add(t2);
      t2.setBounds(275,275,250,25);
      
      add(t3);
      t3.setBounds(275,450,250,25);
      
      l3.setForeground(Color.red);
      add(l3);
      l3.setBounds(175,275,75,25);
      
      l4.setForeground(Color.red);
      add(l4);
      l4.setBounds(175,450,75,25);
      
      b1.setBackground(Color.black);
      b1.setForeground(Color.red);
      add(b1);
      b1.setBounds(275,363,250,25);
      
      b2.setBackground(Color.black);
      b2.setForeground(Color.red);
      add(b2);
      b2.setBounds(550,363,150,25);


      add(l5);
      
      
      
       b1.addActionListener(new ActionListener()
       {
         public void actionPerformed(ActionEvent e)
         {
              String a = t2.getText();
              String klartext = t2.getText();
              String key =t1.getText();
              int n = Integer.parseInt(t1.getText());
              int b;
              int i;
              String Str="";
              int keyas;
              int wahl = c1.getSelectedIndex();
              switch (wahl)
              {
                case 0:
                {
                  int wahl2 = c2.getSelectedIndex();

                  switch (wahl2)
                  {
                    case 0:
                    {
                         for (int x=0; x< a.length(); x++)
                          {
                                  b = a.charAt(x);
                                  int geheimtext = (((b + n)-32) % 91)+32;
                                  Str = Str+(char)geheimtext;


                          }
                                  t3.setText(Str);
                    }break;//kodieren

                    default:
                    {
                          for (int x=0; x< a.length(); x++)
                          {
                                  b = a.charAt(x);
                                  int geheimtext = (((b - n)-32) % 91)+32;
                                  Str = Str+(char)geheimtext;


                          }
                                  t3.setText(Str);
                    }break;//dekodieren
                  }
                } break;//caesar
                
                default:
                {
                  int wahl2 = c2.getSelectedIndex();
                  
                  switch (wahl2)
                  {
                    case 0:
                    {
                      for ( i=0, keyas=0; i< klartext.length(); i++, keyas++)
                              {

                                if( keyas == key.length()) keyas = 0;
                                int geheimtext = (char)((((klartext.charAt(i)+ key.charAt(keyas))-32)%90)+32);
                                Str = Str+(char)geheimtext;

                              }
                              t3.setText(Str);
                    }break;//kodieren
                    
                    default:
                    {
                      for ( i=0, keyas=0; i< klartext.length(); i++, keyas++)
                              {

                                if( keyas == key.length()) keyas = 0;
                                int geheimtext = (char)((((klartext.charAt(i)- key.charAt(keyas))-32)%90)+32);
                                Str = Str+(char)geheimtext;

                              }
                              t3.setText(Str);
                    }break;//dekodieren
                  }
                } break;//virgené
              }
         }
       });


      b2.addActionListener(new ActionListener()
     {
        public void actionPerformed(ActionEvent e)
       {
         t3.setText("");
         t2.setText("");
       }
     });
       
  }
}
```

Ich hoffe Ihr könnt mir weiter helfen.

Liebe Grüße aus Meck Pomm,

DenTureS


----------



## SlaterB (26. Feb 2008)

Tipp: baue erstmal ein Konsolen Programm ohne Gui (-> minus 100 Zeilen auf nur noch 100)
sowie ohne Caesar (-> minus 50 Zeilen auf nur noch 50)


wenn du dann ein einfaches sauberes Testprogramm mit einem vorgegeben Beispiel-Text hast, den man nicht eintippen muss,
dann kann man langsam über das Problem nachdenken


----------



## Saxony (26. Feb 2008)

SlaterB hat gesagt.:
			
		

> Tipp: baue erstmal ein Konsolen Programm ohne Gui (-> minus 100 Zeilen auf nur noch 100)
> sowie ohne Caesar (-> minus 50 Zeilen auf nur noch 50)
> 
> 
> ...



Also ein KSKB 

bye Saxony


----------

