<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.freitagsrunde.org/history/Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung?feed=atom</id>
	<title>Javakurs/Übungsaufgaben/Cäsar-Chiffre/Musterlösung - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.freitagsrunde.org/history/Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung?feed=atom"/>
	<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/history/Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung"/>
	<updated>2026-11-04T21:58:45Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in FreitagsrundenWiki</subtitle>
	<generator>MediaWiki 1.45.6</generator>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung&amp;diff=15997&amp;oldid=prev</id>
		<title>98.210.208.240 am 27. Mai 2011 um 09:13 Uhr</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung&amp;diff=15997&amp;oldid=prev"/>
		<updated>2011-05-27T09:13:16Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung&amp;amp;diff=15997&amp;amp;oldid=14158&quot;&gt;Änderungen zeigen&lt;/a&gt;</summary>
		<author><name>98.210.208.240</name></author>
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung&amp;diff=14158&amp;oldid=prev</id>
		<title>Jörg F: hat „Javakurs2007/Cäsar-Chiffre/Musterlösung“ nach „Javakurs/Übungsaufgaben/Cäsar-Chiffre/Musterlösung“ verschoben:&amp;#32;wikistruktur</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung&amp;diff=14158&amp;oldid=prev"/>
		<updated>2010-08-01T11:50:59Z</updated>

		<summary type="html">&lt;p&gt;hat „&lt;a href=&quot;/Javakurs2007/C%C3%A4sar-Chiffre/Musterl%C3%B6sung&quot; class=&quot;mw-redirect&quot; title=&quot;Javakurs2007/Cäsar-Chiffre/Musterlösung&quot;&gt;Javakurs2007/Cäsar-Chiffre/Musterlösung&lt;/a&gt;“ nach „&lt;a href=&quot;/Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung&quot; title=&quot;Javakurs/Übungsaufgaben/Cäsar-Chiffre/Musterlösung&quot;&gt;Javakurs/Übungsaufgaben/Cäsar-Chiffre/Musterlösung&lt;/a&gt;“ verschoben: wikistruktur&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 1. August 2010, 11:50 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;de&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(kein Unterschied)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Jörg F</name></author>
	</entry>
	<entry>
		<id>https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung&amp;diff=13613&amp;oldid=prev</id>
		<title>130.149.24.73: Die Seite wurde neu angelegt: „&lt;pre&gt;  /* Decodes texts having been encoded with caesar */     import java.io.*;   public class Caesar {        public static void main(String arg[])     {       ...“</title>
		<link rel="alternate" type="text/html" href="https://wiki.freitagsrunde.org/index.php?title=Javakurs/%C3%9Cbungsaufgaben/C%C3%A4sar-Chiffre/Musterl%C3%B6sung&amp;diff=13613&amp;oldid=prev"/>
		<updated>2010-03-22T11:25:38Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „&amp;lt;pre&amp;gt;  &lt;span class=&quot;autocomment&quot;&gt;Decodes texts having been encoded with caesar: &lt;/span&gt;     import java.io.*;   public class Caesar {        public static void main(String arg[])     {       ...“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Decodes texts having been encoded with caesar */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
import java.io.*;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
public class Caesar {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     public static void main(String arg[])&lt;br /&gt;
&lt;br /&gt;
   {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    int menuCase;&lt;br /&gt;
&lt;br /&gt;
    String text= new String();&lt;br /&gt;
    String textState= &amp;quot;nothing loaded&amp;quot;;&lt;br /&gt;
    String output= new String(); /*will always be shown under menu*/&lt;br /&gt;
    int key;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    do&lt;br /&gt;
&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
     System.out.println(&amp;quot;[1] load text&amp;quot;);&lt;br /&gt;
     System.out.println(&amp;quot;[2] show text&amp;quot;);&lt;br /&gt;
     System.out.println(&amp;quot;[3] save text&amp;quot;);&lt;br /&gt;
     System.out.println(&amp;quot;[4] encrypt text&amp;quot;);&lt;br /&gt;
     System.out.println(&amp;quot;[5] decrypt text without key&amp;quot;);&lt;br /&gt;
     System.out.println(&amp;quot;[6] decrypt text with key&amp;quot;);&lt;br /&gt;
     System.out.println(&amp;quot;[7] quit&amp;quot;);&lt;br /&gt;
     System.out.println( );&lt;br /&gt;
     System.out.println(&amp;quot;text state: [&amp;quot;+ textState +&amp;quot;]&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
     System.out.println( );&lt;br /&gt;
     System.out.println( output );&lt;br /&gt;
&lt;br /&gt;
     System.out.print(&amp;quot;input: &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
     String s= readln();&lt;br /&gt;
&lt;br /&gt;
     menuCase= Integer.valueOf(s).intValue();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     switch (menuCase) {&lt;br /&gt;
&lt;br /&gt;
        case 1:&lt;br /&gt;
&lt;br /&gt;
               {&lt;br /&gt;
&lt;br /&gt;
                  System.out.print(&amp;quot;filename: &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                  String fileIn= readln();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                  text= readFile(fileIn);&lt;br /&gt;
 &lt;br /&gt;
                  output = &amp;quot;&amp;quot;;&lt;br /&gt;
                  textState= &amp;quot;loaded&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
                  break;&lt;br /&gt;
&lt;br /&gt;
               }&lt;br /&gt;
&lt;br /&gt;
        case 2: &lt;br /&gt;
               {&lt;br /&gt;
                  output= text;&lt;br /&gt;
                  break;&lt;br /&gt;
               }&lt;br /&gt;
        case 3: &lt;br /&gt;
               {&lt;br /&gt;
                  System.out.print(&amp;quot;filename: &amp;quot;);&lt;br /&gt;
&lt;br /&gt;
                  String fileName= readln();&lt;br /&gt;
&lt;br /&gt;
                  String[] fileToSave= {text};&lt;br /&gt;
                  writeArrayToFile( fileName, fileToSave );&lt;br /&gt;
&lt;br /&gt;
                  output = &amp;quot;&amp;quot;;&lt;br /&gt;
                  break;&lt;br /&gt;
               }&lt;br /&gt;
        case 4:&lt;br /&gt;
               {&lt;br /&gt;
                 System.out.print(&amp;quot;key: &amp;quot;);&lt;br /&gt;
                 key= Integer.valueOf(readln()).intValue();&lt;br /&gt;
&lt;br /&gt;
                 text= encryptCaesar(text, key);&lt;br /&gt;
&lt;br /&gt;
                 output = &amp;quot;&amp;quot;;&lt;br /&gt;
                 textState= &amp;quot;encrypted&amp;quot;;&lt;br /&gt;
                 break;&lt;br /&gt;
               }&lt;br /&gt;
        case 5:&lt;br /&gt;
&lt;br /&gt;
               {&lt;br /&gt;
                 if( determineKoinzidenzindex(text) &amp;lt; 0.06 ) {&lt;br /&gt;
                   output= &amp;quot;Text might not be Caesar encrypted! &amp;quot;;&lt;br /&gt;
                 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 key= findKeyCaesar(text);&lt;br /&gt;
&lt;br /&gt;
                 text= decryptCaesar(text, key);&lt;br /&gt;
 &lt;br /&gt;
                 output= new String(&amp;quot;key is: &amp;quot;+ key);&lt;br /&gt;
                 textState= &amp;quot;decrypted&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 break;&lt;br /&gt;
&lt;br /&gt;
               }&lt;br /&gt;
        case 6:&lt;br /&gt;
&lt;br /&gt;
               {&lt;br /&gt;
                 System.out.print(&amp;quot;key: &amp;quot;);&lt;br /&gt;
                 key= Integer.valueOf(readln()).intValue();&lt;br /&gt;
&lt;br /&gt;
                 text= decryptCaesar(text, key);&lt;br /&gt;
&lt;br /&gt;
                 output = &amp;quot;&amp;quot;;&lt;br /&gt;
                 textState= &amp;quot;decrypted&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                 break;&lt;br /&gt;
&lt;br /&gt;
               }&lt;br /&gt;
&lt;br /&gt;
       }//switch&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   }while(menuCase!=7);&lt;br /&gt;
&lt;br /&gt;
  } //main&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /* reads in a text from console */&lt;br /&gt;
&lt;br /&gt;
  public static String readln() {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    BufferedReader consoleLine =&lt;br /&gt;
&lt;br /&gt;
    new BufferedReader(new InputStreamReader(System.in));&lt;br /&gt;
&lt;br /&gt;
    String input = null;&lt;br /&gt;
&lt;br /&gt;
    try {&lt;br /&gt;
&lt;br /&gt;
      input = consoleLine.readLine();&lt;br /&gt;
&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
      return input;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /**&lt;br /&gt;
&lt;br /&gt;
   * Schreibt einen String-Array in eine Datei. &lt;br /&gt;
&lt;br /&gt;
    * @param filename : Pfad zu der Datei in Form eines Strings,&lt;br /&gt;
                        also z.B. &amp;quot;hallo.txt&amp;quot; oder &amp;quot;/etc/fstab&amp;quot;, ...&lt;br /&gt;
    * @param data String-Array: welches in die angegebene Datei &lt;br /&gt;
                                geschrieben werden soll.&lt;br /&gt;
    * @return&lt;br /&gt;
    */&lt;br /&gt;
&lt;br /&gt;
  public static boolean writeArrayToFile(String filename, &lt;br /&gt;
                                         String[] data   ) {&lt;br /&gt;
&lt;br /&gt;
    BufferedWriter bufferedWriter;&lt;br /&gt;
&lt;br /&gt;
    try {&lt;br /&gt;
&lt;br /&gt;
      // Datei zum schreiben oeffnen&lt;br /&gt;
&lt;br /&gt;
      bufferedWriter= new BufferedWriter(&lt;br /&gt;
&lt;br /&gt;
           new OutputStreamWriter( new FileOutputStream(filename)) );&lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
&lt;br /&gt;
    // Array Elementenweise in Datei schreiben&lt;br /&gt;
    for (int i = 0; i &amp;lt; data.length; i++) {&lt;br /&gt;
&lt;br /&gt;
      bufferedWriter.write(data[i]);&lt;br /&gt;
      bufferedWriter.newLine();&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    bufferedWriter.flush();&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      // Fehlerbehandlung&lt;br /&gt;
&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
      return false;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
      return true;		&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /* reads in a text */&lt;br /&gt;
&lt;br /&gt;
  public static String readFile( String fileName ) {&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    String text= new String();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    try {&lt;br /&gt;
&lt;br /&gt;
      FileReader file = new FileReader (fileName);&lt;br /&gt;
&lt;br /&gt;
      BufferedReader buff = new BufferedReader(file);&lt;br /&gt;
&lt;br /&gt;
      boolean eof = false;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
      while ( !eof ) {&lt;br /&gt;
&lt;br /&gt;
        String line = buff.readLine();&lt;br /&gt;
&lt;br /&gt;
        if ( null == line ) {&lt;br /&gt;
&lt;br /&gt;
             eof = true;&lt;br /&gt;
&lt;br /&gt;
        } else {&lt;br /&gt;
&lt;br /&gt;
          text+= line;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     buff.close();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    } catch (IOException e) {&lt;br /&gt;
&lt;br /&gt;
      System.out.println( e.toString() );&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
   return text;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
                                                                   &lt;br /&gt;
  /* takes out punctuation and sets all letters to lower case */&lt;br /&gt;
&lt;br /&gt;
  public static String takeOutPunctuation( String origin ) {&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   String originLowCase= origin.toLowerCase();&lt;br /&gt;
   String text= new String();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   for ( int i= 0; i&amp;lt;originLowCase.length(); i++ ) {&lt;br /&gt;
     /* filtering signs &amp;#039;a&amp;#039; to &amp;#039;z&amp;#039; using ASCII numbers */&lt;br /&gt;
&lt;br /&gt;
     if (   ((int) originLowCase.charAt(i)&amp;gt;= 97) &lt;br /&gt;
         &amp;amp;&amp;amp; ((int) originLowCase.charAt(i)&amp;lt;= 122) )&lt;br /&gt;
&lt;br /&gt;
     text+= originLowCase.charAt(i);&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   return text;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  public static int[] frequencyAnalysis( String text ) {&lt;br /&gt;
&lt;br /&gt;
    /* holds frequency of chars a-z, last digit (index 26) is total &lt;br /&gt;
     * number of chars in text*/&lt;br /&gt;
&lt;br /&gt;
    int chr[]= new int[27];  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    for ( int j= 0; j&amp;lt; text.length(); j++ ) {&lt;br /&gt;
&lt;br /&gt;
      chr[ ((int) text.charAt(j)) - 97 ]++;&lt;br /&gt;
&lt;br /&gt;
      chr[26]++;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   return chr;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /*see also: http://de.wikipedia.org/wiki/Koinzidenzindex */  &lt;br /&gt;
&lt;br /&gt;
  public static double determineKoinzidenzindex( String text ) {&lt;br /&gt;
&lt;br /&gt;
    text= takeOutPunctuation( text );&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    int cnt= 0; &lt;br /&gt;
    double kindex= 0;&lt;br /&gt;
&lt;br /&gt;
    /* holds frequency of chars a-z, last digit (index 26) is total &lt;br /&gt;
     * number of chars in text*/&lt;br /&gt;
&lt;br /&gt;
    int chr[]= frequencyAnalysis(text);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /* chr.length-1 remember: last digit holds number of chars */&lt;br /&gt;
&lt;br /&gt;
    for ( int k= 0; k&amp;lt; chr.length-1; k++ ) {&lt;br /&gt;
&lt;br /&gt;
      kindex+= ( ((double) chr[k]/chr[26])*((double) chr[k]/chr[26]));&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    return kindex;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* count the number of nigramms and trigramms  in a german text*/&lt;br /&gt;
&lt;br /&gt;
  public static int germanText( String text ) {&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
    int cntbitri= 0; //counter for bi- and trigramms&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    /* count bigramms */&lt;br /&gt;
&lt;br /&gt;
    for ( int i= 0; i&amp;lt; text.length()-1; i++ ) {&lt;br /&gt;
&lt;br /&gt;
        if (&lt;br /&gt;
&lt;br /&gt;
            (text.substring(i, i+2).equals(&amp;quot;er&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
            ||(text.substring(i, i+2).equals(&amp;quot;en&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
            ||(text.substring(i, i+2).equals(&amp;quot;ch&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
            ||(text.substring(i, i+2).equals(&amp;quot;de&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
            ||(text.substring(i, i+2).equals(&amp;quot;ei&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
            ||(text.substring(i, i+2).equals(&amp;quot;nd&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
            ||(text.substring(i, i+2).equals(&amp;quot;te&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
            ||(text.substring(i, i+2).equals(&amp;quot;in&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
            ||(text.substring(i, i+2).equals(&amp;quot;ie&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
            ||(text.substring(i, i+2).equals(&amp;quot;ge&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
           )&lt;br /&gt;
&lt;br /&gt;
             cntbitri++;&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   /* count trigramms */&lt;br /&gt;
&lt;br /&gt;
   for ( int i= 0; i&amp;lt; text.length()-2; i++ ) {&lt;br /&gt;
&lt;br /&gt;
     if (&lt;br /&gt;
&lt;br /&gt;
          (text.substring(i, i+3).equals(&amp;quot;ein&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;ich&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;nde&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;die&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;und&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;der&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;che&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;end&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;gen&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;sch&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
         ) cntbitri++;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   return cntbitri;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /* count the number of nigramms and trigramms in an english text*/&lt;br /&gt;
&lt;br /&gt;
  public static int englishText( String text ) {&lt;br /&gt;
&lt;br /&gt;
    int cntbitri= 0; /*counter for bi- and trigramms */&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
   /* count bigramms */&lt;br /&gt;
&lt;br /&gt;
   for ( int i= 0; i&amp;lt; text.length()-1; i++ ) {&lt;br /&gt;
&lt;br /&gt;
     if (&lt;br /&gt;
&lt;br /&gt;
          (text.substring(i, i+2).equals(&amp;quot;th&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+2).equals(&amp;quot;he&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+2).equals(&amp;quot;an&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+2).equals(&amp;quot;in&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+2).equals(&amp;quot;er&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+2).equals(&amp;quot;re&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+2).equals(&amp;quot;on&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+2).equals(&amp;quot;es&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+2).equals(&amp;quot;ti&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+2).equals(&amp;quot;at&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
         )&lt;br /&gt;
&lt;br /&gt;
       cntbitri++;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   /* count trigramms */&lt;br /&gt;
&lt;br /&gt;
   for (int i= 0; i&amp;lt; text.length()-2; i++) {&lt;br /&gt;
&lt;br /&gt;
     if (&lt;br /&gt;
&lt;br /&gt;
          (text.substring(i, i+3).equals(&amp;quot;the&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;ing&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;and&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;ion&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;tio&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;ent&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;ere&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;her&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;ate&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
          ||(text.substring(i, i+3).equals(&amp;quot;ver&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
     ) cntbitri++;&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
   return cntbitri;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  public static int findKeyCaesar(String origin) {&lt;br /&gt;
    /* proccedding:&lt;br /&gt;
&lt;br /&gt;
     * search for most frequent char in encoded text and assume it is&lt;br /&gt;
     * one of the three most frequent letters in german or english&lt;br /&gt;
     * language.&lt;br /&gt;
&lt;br /&gt;
     * decode text end test if it is decipheable&lt;br /&gt;
     */&lt;br /&gt;
   origin= takeOutPunctuation( origin );&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
   String text= new String();&lt;br /&gt;
   /* number of occurence of most frequent char: */&lt;br /&gt;
&lt;br /&gt;
   int mostFrequentChrValue= 0;&lt;br /&gt;
&lt;br /&gt;
   int mostFrequentChr= 0;     //most frequent char in text&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   char en[]= {&amp;#039;e&amp;#039;,&amp;#039;t&amp;#039;,&amp;#039;a&amp;#039;,};  //most frequent letters in english&lt;br /&gt;
&lt;br /&gt;
   char ge[]= {&amp;#039;e&amp;#039;,&amp;#039;n&amp;#039;,&amp;#039;i&amp;#039;,};  //most frequent letters in german&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   int biTriMax= 0;            //maximal value of bi- and trigramms&lt;br /&gt;
&lt;br /&gt;
   int biTriTemp= 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   int displacement= 0;&lt;br /&gt;
   int key= 0;&lt;br /&gt;
&lt;br /&gt;
   double kindex= determineKoinzidenzindex(origin);&lt;br /&gt;
&lt;br /&gt;
     &lt;br /&gt;
&lt;br /&gt;
/*&lt;br /&gt;
&lt;br /&gt;
    System.out.print(&amp;quot;Koinzidenzindex: &amp;quot;+ kindex );&lt;br /&gt;
&lt;br /&gt;
    if ( kindex &amp;lt; 0.07 ) {&lt;br /&gt;
&lt;br /&gt;
       System.out.println( &amp;quot; english text&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
&lt;br /&gt;
        System.out.println(&amp;quot; german text&amp;quot; );&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    System.out.println( );&lt;br /&gt;
&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
   /* define most frequent char */&lt;br /&gt;
&lt;br /&gt;
   int chr[]= frequencyAnalysis(origin);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   for ( int i= 0; i&amp;lt; chr.length-1; i++) {&lt;br /&gt;
&lt;br /&gt;
     if ( mostFrequentChrValue&amp;lt; chr[i] ) {&lt;br /&gt;
&lt;br /&gt;
       mostFrequentChrValue= chr[i];&lt;br /&gt;
&lt;br /&gt;
       mostFrequentChr= i;&lt;br /&gt;
&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
   }//for&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
   /*assume most frequent char as (e,t,a)(engl.) or (e,n,i)(germ.) */&lt;br /&gt;
&lt;br /&gt;
   for ( int k= 0; k&amp;lt; en.length; k++ ) {&lt;br /&gt;
      /* decide if text german or english */&lt;br /&gt;
&lt;br /&gt;
     if ( kindex &amp;lt; 0.07 ) {&lt;br /&gt;
       /*assumed char causes certain displacement */&lt;br /&gt;
&lt;br /&gt;
       displacement= (mostFrequentChr+97) -  (int) en[k]  ;   &lt;br /&gt;
&lt;br /&gt;
     } else {&lt;br /&gt;
&lt;br /&gt;
       displacement= (mostFrequentChr+97) -  (int) ge[k]  ;&lt;br /&gt;
&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     if ( kindex &amp;lt; 0.07) {&lt;br /&gt;
&lt;br /&gt;
       text= decryptCaesar(origin, displacement);&lt;br /&gt;
&lt;br /&gt;
       biTriTemp= englishText(text);&lt;br /&gt;
&lt;br /&gt;
     } else {&lt;br /&gt;
&lt;br /&gt;
       text= decryptCaesar(origin, displacement);&lt;br /&gt;
&lt;br /&gt;
       biTriTemp= germanText(text);&lt;br /&gt;
&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
     /* displacement causing highest biTri value is key */&lt;br /&gt;
&lt;br /&gt;
     if ( biTriMax&amp;lt; biTriTemp ) &lt;br /&gt;
&lt;br /&gt;
       {&lt;br /&gt;
&lt;br /&gt;
         biTriMax= biTriTemp;&lt;br /&gt;
&lt;br /&gt;
         key= displacement;&lt;br /&gt;
&lt;br /&gt;
       }&lt;br /&gt;
&lt;br /&gt;
   }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   System.out.println(&amp;quot;Schluessel lautet: &amp;quot;+ key );&lt;br /&gt;
&lt;br /&gt;
   return key;&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  public static String encryptCaesar( String text, int key ) {&lt;br /&gt;
    return ( modifyText(text, key) );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  public static String decryptCaesar( String text, int key ) {&lt;br /&gt;
    key= key*(-1);&lt;br /&gt;
    return ( modifyText(text, key) );&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  public static String modifyText( String text, int key ) {&lt;br /&gt;
    String encrypted= new String(&amp;quot;&amp;quot;);&lt;br /&gt;
  &lt;br /&gt;
    key= key%26;&lt;br /&gt;
&lt;br /&gt;
    int code= 0;&lt;br /&gt;
    int currentChar= 0;&lt;br /&gt;
&lt;br /&gt;
    for ( int i= 0; i&amp;lt; text.length(); i++ ) {&lt;br /&gt;
&lt;br /&gt;
      currentChar= (int) text.charAt(i);&lt;br /&gt;
      code= currentChar;&lt;br /&gt;
&lt;br /&gt;
      /*lower case letters*/&lt;br /&gt;
      code= filterSigns(currentChar, code, key, 97, 122);&lt;br /&gt;
&lt;br /&gt;
      /* upper case letters */&lt;br /&gt;
      code= filterSigns(currentChar, code, key, 65, 90);&lt;br /&gt;
&lt;br /&gt;
      /* numbers */      &lt;br /&gt;
      code= filterSigns(currentChar, code, key, 48, 57);&lt;br /&gt;
&lt;br /&gt;
      encrypted+= (char) code; &lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return encrypted;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /*replaces char only if it is situated in given boundarys*/&lt;br /&gt;
  public static int filterSigns(int currentChar, int code, int key,&lt;br /&gt;
                             int lowerBoundary, int upperBoundary ) {&lt;br /&gt;
&lt;br /&gt;
    int range= upperBoundary - lowerBoundary + 1;&lt;br /&gt;
&lt;br /&gt;
    if ( (currentChar &amp;gt;= lowerBoundary) &amp;amp; &lt;br /&gt;
         (currentChar &amp;lt;= upperBoundary)   ) {&lt;br /&gt;
&lt;br /&gt;
        code= currentChar + key;&lt;br /&gt;
&lt;br /&gt;
        while ( code &amp;gt; upperBoundary ) {&lt;br /&gt;
&lt;br /&gt;
          code-= range;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        while( code &amp;lt; lowerBoundary ) {&lt;br /&gt;
&lt;br /&gt;
          code+= range;&lt;br /&gt;
&lt;br /&gt;
        }        &lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
    return code;&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>130.149.24.73</name></author>
	</entry>
</feed>