Hallo,
Ich habe eine Verschlüsselung via Caesar-Chiffre geschrieben.
Also die Theorie ist ganz einfach :
Man hat ein Wort/Satz/Text und einen Schlüssel. Der Schlüssel besteht aus EINEM Buchstaben.
Der Buchstabe erhält eine Wertigkeit je nachdem welche Stelle der Buchstabe im Alphabet hat.
Also so hat zum Beispiel C die Wertigkeit 3 ,da er an der dritten Stelle im Alphabet steht.
jetzt wird das Wort (z.B.Hallo) "verschlüsselt" also wird jeder einzelne Buchstabe um 3 Stellen verschoben.
so wird aus dem Wort "Hallo " mit dem Schlüssel "c" das wort "kdoor".
soweit läuft das. Wenn ich jedoch ein grosses "C" statt einem kleinen nehme kommt bei dem wort "Hallo"
das Wort "+DOOR" raus
wie kann ich das verhindern?
Hier mal mein CODE
Schonmal Danke im vorraus für eure Mühe
Ich habe eine Verschlüsselung via Caesar-Chiffre geschrieben.
Also die Theorie ist ganz einfach :
Man hat ein Wort/Satz/Text und einen Schlüssel. Der Schlüssel besteht aus EINEM Buchstaben.
Der Buchstabe erhält eine Wertigkeit je nachdem welche Stelle der Buchstabe im Alphabet hat.
Also so hat zum Beispiel C die Wertigkeit 3 ,da er an der dritten Stelle im Alphabet steht.
jetzt wird das Wort (z.B.Hallo) "verschlüsselt" also wird jeder einzelne Buchstabe um 3 Stellen verschoben.
so wird aus dem Wort "Hallo " mit dem Schlüssel "c" das wort "kdoor".
soweit läuft das. Wenn ich jedoch ein grosses "C" statt einem kleinen nehme kommt bei dem wort "Hallo"
das Wort "+DOOR" raus
wie kann ich das verhindern?
Hier mal mein CODE
Java:
public class Bla {
// private char hallo[];
private char[] arrtext = null;
private char key;
// Konstruktoren
public Bla(char key) {
arrtext = createArray();
this.key = key;
}
public Bla() {
arrtext = createArray();
this.key = 3;
}
// erstellen der ZeichenTabelle
public char[] createArray() {
// 33 Zeichen , 26Großbuchstaben , 6Zeichen ,26Kleinbuchstaben ,
// 4Zeichen
char[] ch = new char[33 + 26 + 6 + 26 + 4];
int pos = 0;
// Zuordnung der Zeichen
for (int j = 32; j < 127; j++) {
ch[pos++] = (char) j;
}
return ch;
}
public String codieren(String text) {
// Start einer Zeichenkette
StringBuffer codiert = new StringBuffer();
for (int i = 0; i < text.length(); i++) {
// aktueller char
char akt = text.charAt(i);
for (int j = 0; j < this.arrtext.length; j++) {
if (akt == this.arrtext[j]) {
// Verschlüsselter Buchstabe
int bst = j + key;
int test = bst - this.arrtext.length;
if (test < 0) {
bst -= this.arrtext.length;
}
if (bst >= this.arrtext.length) {
bst -= this.arrtext.length;
}
else if (bst < 0) {
bst += this.arrtext.length;
}
// falls maximale Zeichen erreicht wurden => Maximale
// Zeichen abziehen
if (bst > 94) {
bst -= 94;
}
bst -= 1;
akt = this.arrtext[bst];
break;
}
}
if (akt > 91) {
akt -= 36;
}
// Stück für Stück Zeichenkette zusammenfügen
codiert.append(akt);
}
return codiert.toString();
}
public String decodieren(String text) {
// Start einer Zeichenkette
StringBuffer codiert = new StringBuffer();
for (int i = 0; i < text.length(); i++) {
// aktueller char
char akt = text.charAt(i);
for (int j = 0; j < this.arrtext.length; j++) {
if (akt == this.arrtext[j]) {
// Verschlüsselter Buchstabe
int bst = j - key;
if (bst >= this.arrtext.length) {
bst -= this.arrtext.length;
}
else if (bst < 0) {
bst += this.arrtext.length;
}
// falls maximale Zeichen erreicht wurden => Maximale
// Zeichen abziehen
if (bst < 0) {
bst += 94;
}
bst += 1;
akt = this.arrtext[bst];
break;
}
}
// Stück für Stück Zeichenkette zusammenfügen
codiert.append(akt);
}
return codiert.toString();
}
}
Schonmal Danke im vorraus für eure Mühe