Ignore:
Timestamp:
Jun 15, 2010, 2:57:25 PM (12 years ago)
Author:
nolte
Message:

added a report output to visualize all found keys

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/VigenereAutokeyAnalyser/VigenereAutokeyAnalyser.cs

    r1635 r1644  
    4343
    4444        private String textkorpus;                                  //Alternative to the predetermindet Frequencys in Languages
     45        private String report = "";                                 //A report of all analysed keys (Optional output string)
    4546
    4647        private int maxkeylength;                                   //The maximum keylength we search for
     
    5758        //Reminder Section
    5859        private String finalkey;                                    //The solution
    59         private double finalIC = 0.0;                               //The IC for the solution
     60        private double finalIC;                                     //The IC for the solution
    6061        private double sumofsquares;                                //The Sum of Squares for the best solution
    6162
     
    129130                this.finalkey = value;
    130131                OnPropertyChanged("OutputKey");
     132            }
     133        }
     134
     135        /// <summary>
     136        /// The output for the statistic
     137        /// </summary>
     138        [PropertyInfo(Direction.OutputData, "Report Output", "A text with all analysed keys and their IC values", "", DisplayLevel.Beginner)]
     139        public String OutputStatistic
     140        {
     141            get
     142            {
     143                return report;
     144            }
     145            set
     146            {
     147                this.report = value;
     148                OnPropertyChanged("OutputStatistic");
    131149            }
    132150        }
     
    163181
    164182            alphabet = settings.AlphabetSymbols;                //initialising the alphabet as given by the user       
     183
     184            if (InputCipher != null)
     185            {
     186                ciphertext = InputCipher;                       //initialising the ciphertext
     187                ciphertext = prepareForAnalyse(ciphertext);     //and prepare it for the analyse (-> see private methods section)
     188            }
    165189           
    166             ciphertext = InputCipher;                           //initialising the ciphertext
    167             ciphertext = prepareForAnalyse(ciphertext);         //and prepare it for the analyse (-> see private methods section)
     190
     191            report = "The analysed key(s) and their IC(s): \n"; //initialise the headline of the report
    168192
    169193            modus = settings.Modus;                             //initialise which modus is used
    170194            language = settings.Language;                       //initialise which language frequencys are expected
     195
     196            finalIC = 0.0;                                      //initialise the highest index of coincidence to be found among all tests
    171197
    172198            if (textkorpus != null)                             //1)  if there's a textkorpus given us it to calculate the expected frequency...
     
    207233            OnPropertyChanged("OutputKey");
    208234
     235            OutputStatistic = report;
     236            OnPropertyChanged("OutputStatistic");
     237
    209238            ProgressChanged(1, 1);
    210239       
     
    273302                if (getPos(c[x]) != -1)
    274303                {
    275                     prepared = prepared + c[x];
     304                    prepared += c[x];
    276305                }
    277306            }
     
    368397
    369398                gotcha = (getPos(c[x]) - gotcha + 26) % 26;
    370                 shifted = shifted + alphabet[gotcha];
     399                shifted += alphabet[gotcha];
    371400            }
    372401
     
    387416
    388417                gotcha = (getPos(c[x]) - s + 26) % 26;
    389                 shifted = shifted + alphabet[gotcha];
     418                shifted += alphabet[gotcha];
    390419            }
    391420
     
    484513                        if (column + i * keylength < ciphertext.Length)
    485514                        {
    486                             ciphercolumn = ciphercolumn + ciphertext[column + i * keylength];
     515                            ciphercolumn += ciphertext[column + i * keylength];
    487516                        }
    488517                    }
     
    505534                    }
    506535
    507                     completeplain = completeplain + getShift(ciphercolumn, getPos(probablekeychar)); //remembers a decrypted cipher
    508                     key = key + probablekeychar;                                                     //remembers the probable key letter of this decryption
    509 
    510 
     536                    completeplain += getShift(ciphercolumn, getPos(probablekeychar)); //remembers a decrypted cipher
     537                    key += probablekeychar;                                           //remembers the probable key letter of this decryption
    511538
    512539                }
     
    515542                IC = getIC(completeplain);                              //calculate the IC(index of coincidence)
    516543
    517                 GuiLogMessage(" " + IC, NotificationLevel.Info);
     544                report += key + " : " + IC + "\n";                      //the report               
    518545
    519546                //the decrypted cipher with the highest index of coincidence was decrypted with the correct key
Note: See TracChangeset for help on using the changeset viewer.