• Wir präsentieren Dir heute ein Stellenangebot für einen Java Entwickler - m/w/d in Augsburg, München, Stuttgart oder Bamberg. Hier geht es zur Jobanzeige

Vigenere Chiffre Programmierung

D

Denise92

Neues Mitglied
Hallo liebe Community,

gibt es unter uns vielleicht Leute, die mir den Code Beispiel erklären können? Ich bin seit Tagen total verzweifelt und versuche heruszufindenwie es programmiert wurde. Ich hoffe ihr könnt mir helfen.

Java:
import java.util.Scanner;

public class vigenere {

    public static char[] crypt(char[] plain, char[] key, int direction) {

        char[] output = new char[plain.length];
        for (int i = 0; i < plain.length; i++) {
            //Verschluesseln
            if (direction == 1) {
                //Umrechnen für ASCII Tabelle
                int result = (plain[i] + key[i % key.length]-194) % 26 ;
                output[i] = (char) (result+97);
            }
            //Entschluesseln
            else if (direction == 0){
                int result;
                if (plain[i] - key[i % key.length] < 0)
                {
                    result = (plain[i]- key[i % key.length]+130) %26 + 97;
                }
                else
                {
                    result = (plain[i] - key[i % key.length]) % 26 +97;
                }
                output[i] = (char) result;
            }
        }
        return output;
    }

    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        System.out.println("Klartext eingeben:");
        String plaintext = scanner.nextLine(); //ohne Umlaute
        plaintext = plaintext.toLowerCase();
        char[] plain = plaintext.toCharArray();

        System.out.println("Schluesselwort eingeben:");
        String keyword = scanner.nextLine();
        keyword = keyword.toLowerCase();
        char[] key = keyword.toCharArray();

        char[] encrypted = crypt(plain, key, 1);
        System.out.println("Verschluesselter Text:");
        System.out.println(encrypted);

        char[] decrypted = crypt(encrypted, key, 0);
        System.out.println("Entschluesselter Text:");
        System.out.println(decrypted);
        scanner.close();
    }
}
 
Zuletzt bearbeitet von einem Moderator:
MoxxiManagarm

MoxxiManagarm

Top Contributor
Was verstehst du daran nicht? Also was ist dir schon klar und was nicht? Hast du dich unabhängig von dem Code mal mit dieser Verschlüsselungstechnik beschäftigt?
 
D

Denise92

Neues Mitglied
Ja mit der Verschlüsselungstechnik habe ich mich auseinandergesetzt. Den Prinzip habe ich verstanden. Jedoch fehlen mir die Kenntnisse den Code zu verstehen.
 
MoxxiManagarm

MoxxiManagarm

Top Contributor
Der Einstiegspunkt des Programms ist die main-Methode. Von dort werden Text und Schlüssel von der Konsole eingelesen, dann verschlüsselt (direction=1) und wieder entschlüsselt (direction=0). Mehr passier in der main nicht. Das Ver- und entschlüsseln wird durch die Methode crypt durchgeführt. Je nach direction wird ein anderes Stück Code ausgeführt. Persönliche Meinung: besser wären 2 Methoden namentlich encrypt und decrypt anstatt Crypto mit direction, das treibt die Komplexität der Methode nur unnötig in die Höhe. Die einzelnen Zeichen werden dann durchiteriert und anhand des Schlüssels "verschoben".
 
Rezz

Rezz

Neues Mitglied
int result = (plain + key[i % key.length]-194) % 26 ;
Hallo, vielleicht kommt diese Frage etwas spät, aber ich als Java Neuling hatte mich hier gefragt, ob Java an dieser Stelle mit den Werten der ASCII Tabelle rechnet, welcher für den jeweiligen Char hinterlegt sind.
Ansonsten sehr interessante Lösung und sehr schlüssige Erklärung. Danke dafür!
 
Rezz

Rezz

Neues Mitglied
Dieser Beitrag ist ausversehen entstanden und möchte sich leider nicht löschen lassen. Daher wünsche ich allen eine schöne Restwoche!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Vigenere und Caesar in verschiedenen Alphabeten Allgemeine Java-Themen 1
K Vigenere- Verschlüsselung Allgemeine Java-Themen 13
T Programm Vigenere Verfahren Allgemeine Java-Themen 14
M RC4-Chiffre (funktioniert eingeschränkt) Allgemeine Java-Themen 6
K Caesar Chiffre Bruteforce Allgemeine Java-Themen 8
G Thread-Programmierung Allgemeine Java-Themen 5
R Input/Output Programmierung mithilfe der Robot Bibliothek Allgemeine Java-Themen 15
M Programmierung von Bibliotheksklassen Allgemeine Java-Themen 3
zhermann Grundsatzfrage zur strukturierter Programmierung Allgemeine Java-Themen 5
S Kaffemaschine Programmierung Probleme Allgemeine Java-Themen 2
P jCheckBox auf der zusammengeknüpften Programmierung anzeigen lassen Allgemeine Java-Themen 3
K Test-Frist Programmierung - wie vorgehen Allgemeine Java-Themen 5
C Programmierung von Fotoeffekten mit Java möglich? Allgemeine Java-Themen 3
J Rekursive Programmierung-Zählen von Ziffern Allgemeine Java-Themen 5
L Designfrage: Dispatcher-Programmierung - redundante Auslegung Allgemeine Java-Themen 1
E Sonderzeichen nicht setzbar: Großes Problem bei Programmierung unter Linux Mint mit Virtual Box Allgemeine Java-Themen 5
C BlackBox-Framework - Plugin Programmierung Allgemeine Java-Themen 4
S Objekt orientierte Programmierung Allgemeine Java-Themen 7
E Socket Client-Server-Programmierung Allgemeine Java-Themen 44
M Parallele Programmierung: volatile Variable nimmt ungewöhnlichen Wert an Allgemeine Java-Themen 3
C Open Soure Projekte für parallele Programmierung Allgemeine Java-Themen 6
E Thread Programmierung Allgemeine Java-Themen 2
K Multithread Programmierung...ExecutionCompletionService Allgemeine Java-Themen 7
E objektorientierte Programmierung Allgemeine Java-Themen 3
C Hilfe bei Adressbuch-Programmierung, wie am Besten mit JList implementieren Allgemeine Java-Themen 2
J Problem mit der Thread Programmierung Allgemeine Java-Themen 2
T Fehler bei der Programmierung eines Universaldienstbrowsers Allgemeine Java-Themen 3
J 3d-Programmierung Allgemeine Java-Themen 7
S BlueJ BlueJ - Geldautomat-Programmierung Allgemeine Java-Themen 2
G Funktionale Programmierung, OO- Programmierung, ... Allgemeine Java-Themen 9
J Hardware Programmierung Allgemeine Java-Themen 3
Kr0e Atomic / Lockfree Programmierung Allgemeine Java-Themen 11
6 Java - Threads - parallele Programmierung - Tutorial Allgemeine Java-Themen 6
I parallele Programmierung mit Java Allgemeine Java-Themen 3
X Error bei der Programmierung eines Sortieralgorithmus Allgemeine Java-Themen 2
J Modul/Komponenten/Addon-Programmierung Allgemeine Java-Themen 3
ModellbahnerTT Dynamische Programmierung, komme nicht weiter.... Allgemeine Java-Themen 15
S Applet Programmierung in Eclipse Allgemeine Java-Themen 12
B Observer vs Listener (GUI-Programmierung) Allgemeine Java-Themen 5
Developer_X Batch Programmierung Allgemeine Java-Themen 4
Developer_X Datei Programmierung Allgemeine Java-Themen 18
hdi Suche nach Begriff aus der Programmierung Allgemeine Java-Themen 11
K Programmierung einer Hilfe Allgemeine Java-Themen 6
G Threads programmierung Allgemeine Java-Themen 7
F Frage zu JSP / Java Programmierung Allgemeine Java-Themen 2
L Brauche Hilfe bei Memory Programmierung Allgemeine Java-Themen 2
G Framework für Multi-Prozessor-Programmierung? Allgemeine Java-Themen 4
tomtailor Mobiltelefon - Programmierung Allgemeine Java-Themen 8
O Oberfläche und "richtige" Programmierung Allgemeine Java-Themen 8
ven000m Constraint Programmierung Allgemeine Java-Themen 6
X Langsames Java im Bereich der GUI-Programmierung Allgemeine Java-Themen 8
F Klausuraufgaben Java-Programmierung Allgemeine Java-Themen 10
D Elegante Programmierung. Allgemeine Java-Themen 7
G Software für Java programmierung Allgemeine Java-Themen 5
J Frage zu Objektorientierter Programmierung Allgemeine Java-Themen 9
K Bubblesort Programmierung, finde Fehler nicht . Allgemeine Java-Themen 25
bernd Hardwarenahe Programmierung Allgemeine Java-Themen 14
S Taschenrechner und Programmierung Allgemeine Java-Themen 4
D Fraen zur Programmierung einer Volltextsuche Allgemeine Java-Themen 8

Ähnliche Java Themen

Anzeige

Neue Themen


Oben