Wie lautet der Programmcode in Java für das Verschlüsseln/Entschlüsseln mit der Vigenère Verschlüsselung?
Es sollte möglichst einfach gehalten sein und verständlich
Danke schon mal im Vorraus
3 Antworten
Z.B. so:
class Vigenere{
public static String encrypt(String message, String key){
int key_offset = 0;
char[] key_chars = key.toUpperCase().toCharArray();
char[] message_chars = message.toCharArray();
for(int message_offset = 0; message_offset < message_chars.length; ++message_offset){
if(message_chars[message_offset] >= 'a' && message_chars[message_offset] <= 'z'){
message_chars[message_offset] = (char)(97 + ((message_chars[message_offset] - 97) + (key_chars[key_offset++] - 65)) % 26);
}
else if(message_chars[message_offset] >= 'A' && message_chars[message_offset] <= 'Z'){
message_chars[message_offset] = (char)(65 + ((message_chars[message_offset] - 65) + (key_chars[key_offset++] - 65)) % 26);
}
key_offset %= key_chars.length;
}
return new String(message_chars);
}
public static String decrypt(String message, String key){
int key_offset = 0;
char[] key_chars = key.toUpperCase().toCharArray();
char[] message_chars = message.toCharArray();
for(int message_offset = 0; message_offset < message_chars.length; ++message_offset){
if(message_chars[message_offset] >= 'a' && message_chars[message_offset] <= 'z'){
message_chars[message_offset] = (char)(97 + ((message_chars[message_offset] - 97) - (key_chars[key_offset++] - 65) + 26) % 26);
}
else if(message_chars[message_offset] >= 'A' && message_chars[message_offset] <= 'Z'){
message_chars[message_offset] = (char)(65 + ((message_chars[message_offset] - 65) - (key_chars[key_offset++] - 65) + 26) % 26);
}
key_offset %= key_chars.length;
}
return new String(message_chars);
}
}
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Computer
Das klingt mir zu sehr nach Hausaufgabe...
Zerlege das ganze in Teilaufgaben:
- Wie funktioniert die Eingabe des Textes (Kommandozeile?) und des Schlüssels
- Wie würde z.B. Cäsar-Chiffre (Spezialfall/sehr einfache Form der Vigenère-Verschlüsselung) aussehen? Oder auch: wie durchläuft man alle Zeichen eines Strings... + Wie fügt man Zeichen einem neuen String hinzu
- Wie soll die Ausgabe erfolgen? System.out.println?
So schwer ist das nicht... Und bei konkreten Fragen - z.B. warum etwas nicht geht... kannst du dich ja nochmal melden.
Nutzer, der sehr aktiv auf gutefrage ist
So wie ihn der jeweilige Entwickler implementiert.