Bergervei/Java-Verschlüsselungsverfahren
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Java</language>
== Symmetrische Verfahren ==
=== Vorüberlegungen ===
Wie lassen sich prinzipiell Zeichenketten aus Zeichen bilden?
<code id="53ac9d31e308f">
private String Alphabet(int n) {
String Zeichenkette = new String();
char Zeichen = 'A';
for (int i = (int) Zeichen; i < (int) Zeichen + n; i++)
Zeichenkette = Zeichenkette + (char) i;
return Zeichenkette;
}
</code>
<run id="53ac9d31e312d">
Alphabet(26);
</run>
=== Cäsar-Verfahren ===
<code id="53ac82c05623e">
private char Wandeln(char Zeichen, int Schritt) {
int Code = (int) Zeichen;
if (Code > 64 && Code < 91) {
Code = Code + Schritt;
while (Code > 90) Code = Code - 26;
while (Code < 65) Code = Code + 26;
return (char) Code;
}
else
return Zeichen;
}
private String CaesarCodieren(String Zeichenkette, int Schritt, int Richtung) {
String Neukette = new String();
char Buchstabe;
Zeichenkette = Zeichenkette.toUpperCase();
for (int i = 0; i < Zeichenkette.length(); i++) {
Buchstabe = Zeichenkette.charAt(i);
Neukette = Neukette + Wandeln(Buchstabe, Richtung * Schritt);
}
return Neukette;
}
private String Codieren(String Zeichenkette, int Schritt) {
return CaesarCodieren(Zeichenkette, 3, 1);
}
private String DeCodieren(String Zeichenkette, int Schritt) {
return CaesarCodieren(Zeichenkette, 3, -1);
}
</code>
<check>
String Nk = new String("KDOOR ZHOW!");
String Zk = Codieren("Hallo Welt!", 3);
return Zk.trim().equals(Nk);
</check>
<run id="53ac82c0562d6">
Codieren("Hallo Welt!", 3);
</run>
<run id="53ac82c056352">
DeCodieren("KDOOR ZHOW!", 3);
</run>