Hallo zusammen, ich habe folgendes Problem zu folgender Aufgabe:
Schreiben Sie ein Java-Programm, das einen Text mit Hilfe der Caesar-Verschlüsselung chiffriert. Bei dieser einfachen (und unsicheren) Verschlüsselung wird jeder Buchstabe des Klartexts auf einen Geheimtextbuchstaben abgebildet. Diese Abbildung ergibt sich, indem man die Zeichen eines geordneten Alphabets um eine bestimmte Anzahl zyklisch nach rechts verschiebt (rotiert). Die Anzahl der verschobenen Zeichen bildet den Schlüssel, der für die gesamte Verschlüsselung unverändert bleibt.
Eine mögliche Zuordnung der Klartextbuchstaben zu den Geheimtextbuchstaben ist beispielsweise:
Klar: a b c d e f g h i j k l m n o p q r s t u v w x y z
Geheim: d e f g h i j k l m n o p q r s t u v w x y z a b c
Schlüssel ist hier 23..
Mein Problem: wenn ich mit 23 verschlüssel, bekomm ich "xyz{bcdefghijklmnopqrstuvz" ausgegeben anstatt "d e f g h i j k l m n o p q r s t u v w x y z a b c"
Any ideas?
Schreiben Sie ein Java-Programm, das einen Text mit Hilfe der Caesar-Verschlüsselung chiffriert. Bei dieser einfachen (und unsicheren) Verschlüsselung wird jeder Buchstabe des Klartexts auf einen Geheimtextbuchstaben abgebildet. Diese Abbildung ergibt sich, indem man die Zeichen eines geordneten Alphabets um eine bestimmte Anzahl zyklisch nach rechts verschiebt (rotiert). Die Anzahl der verschobenen Zeichen bildet den Schlüssel, der für die gesamte Verschlüsselung unverändert bleibt.
Eine mögliche Zuordnung der Klartextbuchstaben zu den Geheimtextbuchstaben ist beispielsweise:
Klar: a b c d e f g h i j k l m n o p q r s t u v w x y z
Geheim: d e f g h i j k l m n o p q r s t u v w x y z a b c
Schlüssel ist hier 23..
Mein Problem: wenn ich mit 23 verschlüssel, bekomm ich "xyz{bcdefghijklmnopqrstuvz" ausgegeben anstatt "d e f g h i j k l m n o p q r s t u v w x y z a b c"
Any ideas?
Java:
public class Caesar {
private final int schluessel;
//Verschlüsselungscode
public Caesar(int schluessel){
this.schluessel = (schluessel%27 +27 + (schluessel/27)) %27;
}
//Verschlüsseln
public char decode(char chr){
int c = chr;
if (c > 96 && c < 122){
c+=schluessel;
if (c>123){
c-=26;
}
}
return (char) c;
} //Entschlüsseln
public char encode(char chr){
int c = chr;
if (c < 96 && c < 122){
c-=schluessel;
if (c>123){
c+=26;
}
}
return (char) c;
}