Source Code for the Vigenère (De)Cipher Applet
=javascript import java.applet.*; import java.awt.*; import java.awt.event.*; public class vigenere extends Applet implements ActionListener{ Button chifButton=new Button("Chiffrieren"); Button reButton=new Button("Dechiffrieren"); TextField eingang=new TextField("Das ist ein streng geheimer Text"); TextField swort=new TextField("Venus "); TextField ausgang=new TextField("Hier kommt das Ergebis raus"); public void actionPerformed(ActionEvent ae){ Object quelle = ae.getSource(); if(quelle==chifButton){ String botschaft=eingang.getText(); String schlWort=umwandlung(swort.getText()); String ergebnis=verschluesselung(botschaft,schlWort,"c"); ausgang.setText(ergebnis); } if(quelle==reButton){ String botschaft=eingang.getText(); String schlWort=umwandlung(swort.getText()); String ergebnis=verschluesselung(botschaft,schlWort,"d"); ausgang.setText(ergebnis); } } public static String umwandlung(String text){ //Schneidet alle Sonderzeichen/Leerzeichen aus 'text' und wandelt in Kleinbuchstaben um text=text.toLowerCase(); String alphabet="abcdefghijklmnopqrstuvwxyz",textneu=""; for (int i=0;i<text.length();i++) { if (alphabet.indexOf(text.charAt(i))!=-1) textneu=textneu+text.charAt(i); } return textneu; } public static int addition(int eins, int zwei){ //addiert zwei Positionen im Alphabet (z.B. 13(n)+18(s)=5(f)) int ergebnis=-1; ergebnis=eins+zwei; if (ergebnis>25) ergebnis=ergebnis-26; return ergebnis; } public static int subtraktion(int eins, int zwei){ //subtrahiert zwei Positionen im Alphabet (z.B. 13(n)-18(s)=21(v)) int ergebnis=-1; ergebnis=zwei-eins; if (ergebnis<0) ergebnis=ergebnis+26; return ergebnis; } public static int positionImAlphabet(char zeichen){ //sucht die Stelle im Alphabet, an der 'zeichen' steht String alphabet="abcdefghijklmnopqrstuvwxyz"; int position=alphabet.indexOf(zeichen); return position; } public static char buchstabeNachPosition(int position){ //sucht den Buchstaben, der an Posititon 'position' im Alphabet steht String alphabet="abcdefghijklmnopqrstuvwxyz"; return alphabet.charAt(position); } public static String verschluesselung(String text, String wort,String b){ //führt die eigentliche Codierung/Decodierung durch String geheimbotschaft=""; text=umwandlung(text); for (int i=0;i<text.length();i++){ int positionImWort=i%wort.length(),buposneu=-1; char buchstabeWortImAlphabet=wort.charAt(positionImWort); char buchstabeTextImAlphabet=text.charAt(i); int posWort=positionImAlphabet(buchstabeWortImAlphabet); int posText=positionImAlphabet(buchstabeTextImAlphabet); if (b=="c") {buposneu=addition(posWort,posText);} //wenn 'chiffrieren' gedrückt wurde if (b=="d") {buposneu=subtraktion(posWort,posText);} // wenn 'dechiffrieren' gedrückt wurde geheimbotschaft=geheimbotschaft+buchstabeNachPosition(buposneu); //die geheimbotschaft wird buchstabe für Buchstabe zusammengesetzt } return geheimbotschaft; } public void init() { chifButton.addActionListener(this); reButton.addActionListener(this); //Layout---------------------------------- setBackground(Color.orange); eingang.setBackground(Color.white); ausgang.setBackground(Color.white); swort.setBackground(Color.white); GridBagLayout gbl=new GridBagLayout(); setLayout(gbl); GridBagConstraints gbc=new GridBagConstraints(); gbc.fill=GridBagConstraints.HORIZONTAL; gbc.anchor=GridBagConstraints.NORTH; gbc.gridwidth=GridBagConstraints.REMAINDER; gbc.insets=new Insets(5,0,5,0); Label text=new Label("Text"); Label sch=new Label("Schlüsselwort"); Label botschaft=new Label("Botschaft"); Label titel=new Label("Vigenère Chiffriermaschine"); Panel eins=new Panel(); titel.setFont(new Font("Arial",Font.BOLD+Font.ITALIC,16)); eins.add(titel); add(eins,gbc); Panel zwei=new Panel(); zwei.add(text); zwei.add(sch); zwei.add(botschaft); zwei.setLayout(new GridLayout(3,1)); Panel drei=new Panel(); drei.add(eingang); drei.add(swort); drei.add(ausgang); drei.setLayout(new GridLayout(3,1)); Panel vier=new Panel(); vier.setLayout(new GridBagLayout()); gbc.anchor=GridBagConstraints.WEST; gbc.gridwidth=1; vier.add(zwei,gbc); gbc.anchor=GridBagConstraints.EAST; gbc.gridwidth=GridBagConstraints.REMAINDER; vier.add(drei); gbc.anchor=GridBagConstraints.CENTER; add(vier,gbc); Panel fuenf=new Panel(); fuenf.add(chifButton); fuenf.add(reButton); add(fuenf,gbc); } }