/**
*
* Beschreibung
*
* @version 1.1 vom 28.09.2007
* @author
*/
public class CaesarWS {
public static void main(String[] args) {
String Text = "Die Caesar-Verschlüsselung ist ein besonders einfacher Sonderfall einer \n";
Text = Text + "einfachen monoalphabetischen Substitution. Zum Zwecke der Verschlüsselung wird\n";
Text = Text + "dabei jeder Buchstabe des lateinischen Standardalphabets um eine bestimmte \n";
Text = Text + "Anzahl von Positionen zyklisch verschoben (rotiert). Die Anzahl bestimmt \n";
Text = Text + "den Schlüssel, der für die gesamte Verschlüsselung unverändert bleibt. \n";
Text = Text + "Es ist eine der einfachsten (und unsichersten) Formen einer Geheimschrift.\n";
//Text = Text + " \n";
String Krypto = "Jok Igkygx-Bkxyinrüyykratm oyz kot hkyutjkxy kotlginkx Yutjkxlgrr kotkx \n";
Krypto = Krypto + "kotlginkt sutugrvnghkzoyinkt Yahyzozazout. Fas Fckiqk jkx Bkxyinrüyykratm coxj \n";
Krypto = Krypto + "jghko pkjkx Hainyzghk jky rgzkotoyinkt Yzgtjgxjgrvnghkzy as kotk hkyzosszk \n";
Krypto = Krypto + "Gtfgnr but Vuyozoutkt feqroyin bkxyinuhkt (xuzokxz). Jok Gtfgnr hkyzossz \n";
Krypto = Krypto + "jkt Yinrüyykr, jkx lüx jok mkygszk Bkxyinrüyykratm atbkxätjkxz hrkohz. \n";
Krypto = Krypto + "Ky oyz kotk jkx kotlginyzkt (atj atyoinkxyzkt) Luxskt kotkx Mknkosyinxolz. \n";
//Krypto = Krypto + " \n";
encrypt( Text,6 );
System.out.println( );
decrypt( Krypto,6);
} // eof main
public static void encrypt(String text, int n)
{
System.out.println( text );
//System.out.println( n );
int aInt = (int) 'a';
int zInt = (int) 'z';
int AInt = (int) 'A';
int ZInt = (int) 'Z';
int dis;
/*
System.out.println( aInt );
System.out.println( zInt );
System.out.println( AInt );
System.out.println( ZInt );
*/
int laenge = text.length() - 1;
for (int i = 0; i <= laenge; i++)
{
char zeichen = text.charAt(i);
int konvert = (int) zeichen;
if ((aInt <= konvert) && (konvert <= zInt)){
konvert = konvert + n;
if (konvert > zInt){
dis = konvert - zInt;
konvert = aInt + dis - 1;
}
zeichen = (char) konvert;
}
else
{
if ((AInt <= konvert) && (konvert <= ZInt) ){
konvert = konvert + n;
if (konvert > ZInt){
dis = konvert - ZInt;
konvert = AInt + dis - 1;
}
zeichen = (char) konvert;
}
}
System.out.print( zeichen );
} // eof for
} // eof encrypt
//////////////////////////////////////////////////
public static void decrypt(String krypto, int n)
{
//System.out.println( krypto );
//System.out.println( n );
int aInt = (int) 'a';
int zInt = (int) 'z';
int AInt = (int) 'A';
int ZInt = (int) 'Z';
int dis;
int laenge = krypto.length() - 1;
for (int i = 0; i <= laenge; i++)
{
char zeichen = krypto.charAt(i);
int konvert = (int) zeichen;
if ((aInt <= konvert) && (konvert <= zInt)){
konvert = konvert - n;
if (konvert < aInt){
dis = aInt - konvert;
konvert = zInt - dis + 1;
}
zeichen = (char) konvert;
}
else
{
if ((AInt <= konvert) && (konvert <= ZInt) ){
konvert = konvert - n;
if (konvert < AInt){
dis = AInt - konvert;
konvert = ZInt - dis + 1 ;
}
zeichen = (char) konvert;
}
}
System.out.print( zeichen );
} // eof for
} // eof decrypt
} // eof class CaesarWS