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("HALLO WELT!");
String Zk = DeCodieren(Codieren("Hallo Welt!", 3), 3);
return Zk.trim().equals(Nk);
</check>

<run id="53ac82c0562d6">
Codieren("Hallo Welt!", 3);
</run>

<run id="53ac82c056352">
DeCodieren("KDOOR ZHOW!", 3);
</run>