Changeset 1649


Ignore:
Timestamp:
Jun 15, 2010, 7:12:44 PM (11 years ago)
Author:
nolte
Message:

Enhanced the VigenereAutokeyAnalyser with a Presentation

Location:
trunk
Files:
3 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/KeySearcher/KeySearcherQuickWatchPresentation.xaml.cs

    r1069 r1649  
    1515
    1616namespace KeySearcher
    17 {
    18    
     17{   
    1918    /// <summary>
    2019    /// Interaktionslogik für KeySearcherQuickWatchPresentation.xaml
  • trunk/CrypPlugins/Vigenere/Vigenere.cs

    r1444 r1649  
    328328                                break;
    329329
     330
    330331                            case VigenereMode.autodecrypt:
    331332
     
    346347                                    {
    347348                                        autopos++;
    348                                         pkey = alphabet.IndexOf(char.ToUpper(outputString[autopos]));
     349                                        try
     350                                        {
     351                                            pkey = alphabet.IndexOf(char.ToUpper(outputString[autopos]));
     352                                        }
     353                                        catch
     354                                        {
     355                                            //there is an internal failure that doesn't make sense
     356                                            //supposly it has something to do with the threads -.-'/
     357                                        }
    349358                                    }
    350359
  • trunk/CrypPlugins/VigenereAutokeyAnalyser/VigenereAutokeyAnalyser.cs

    r1644 r1649  
    2424using System.Windows.Controls;
    2525using Cryptool.PluginBase.Analysis;
     26using VigenereAutokeyAnalyser;
     27using System.Windows.Threading;
     28using System.Threading;
    2629
    2730namespace Cryptool.Plugins.VigenereAutokeyAnalyser
     
    3538
    3639        private readonly VigenereAutokeyAnalyserSettings settings = new VigenereAutokeyAnalyserSettings();
     40        private UserControl quickWatchPresentation = new AutokeyPresentation();     //The Quickwatch to be used
     41
    3742        private String ciphertext = "";                             //The cipher to be analysed
    3843        private int modus;                                          //The modus to work with (Autokey or Vigenere)
     
    4348
    4449        private String textkorpus;                                  //Alternative to the predetermindet Frequencys in Languages
    45         private String report = "";                                 //A report of all analysed keys (Optional output string)
    4650
    4751        private int maxkeylength;                                   //The maximum keylength we search for
     
    131135                OnPropertyChanged("OutputKey");
    132136            }
    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");
    149             }
    150         }
     137        }     
    151138
    152139        #endregion
     
    161148        public UserControl Presentation
    162149        {
    163             get { return null; }
     150            get { return quickWatchPresentation; }           
    164151        }
    165152
     
    180167            ProgressChanged(0, 1);
    181168
     169            ((AutokeyPresentation)Presentation).Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     170            {
     171                ((AutokeyPresentation)Presentation).entries.Clear();
     172            }, null);
     173           
    182174            alphabet = settings.AlphabetSymbols;                //initialising the alphabet as given by the user       
    183175
     
    186178                ciphertext = InputCipher;                       //initialising the ciphertext
    187179                ciphertext = prepareForAnalyse(ciphertext);     //and prepare it for the analyse (-> see private methods section)
    188             }
    189            
    190 
    191             report = "The analysed key(s) and their IC(s): \n"; //initialise the headline of the report
     180            }                       
    192181
    193182            modus = settings.Modus;                             //initialise which modus is used
    194183            language = settings.Language;                       //initialise which language frequencys are expected
    195 
    196184            finalIC = 0.0;                                      //initialise the highest index of coincidence to be found among all tests
    197185
     
    207195
    208196
    209 
    210 
    211197//-----------------------------------------------------------------------------------------------------------------
    212198//Analyse----------------------------------------------------------------------------------------------------------
     
    215201
    216202            if (InputKeylength != 0)                            //1) if the autokorrelation function has provided an assumed
    217             {                                                   //   keylength break the AutokeyCipher with it...
    218                 assumedkeylength = InputKeylength;
    219                 breakVigenereAutoKey(assumedkeylength);
     203            {                                                   //   keylength break the AutokeyCipher with it...
     204                lock (this)                                     //   IMPORTANT: This is a critical Area and has to be used by only one thread
     205                {
     206                    assumedkeylength = InputKeylength;
     207                    breakVigenereAutoKey(assumedkeylength);
     208                }
    220209            }
    221210            else                                                //OR
     
    227216                }                                               //(-> see private methods section)
    228217            } 
    229            
    230            
    231 
     218                       
    232219            OutputKey = finalkey;                               //sending the key via output
    233220            OnPropertyChanged("OutputKey");
    234221
    235             OutputStatistic = report;
    236             OnPropertyChanged("OutputStatistic");
    237 
    238222            ProgressChanged(1, 1);
    239223       
     
    281265            }
    282266
    283 
    284267            return IC;
    285268        }
     
    295278        {
    296279            String prepared = "";
    297 
    298280            c = c.ToUpper();
    299281
     
    305287                }
    306288            }
     289
    307290            return prepared;
    308291        }
     
    321304            String shifted = "";
    322305            shifted = getShift(c, s);                           //"autokey shift" the whole column by the probable key-letter
    323 
    324306           
    325307            OF = observedFrequency(shifted);                    // calculate the observed frequency of the shift
    326308
    327 
    328309            double sum = 0;
    329310            double help;
     
    349330        {
    350331            int pos = -1;
     332
    351333            for (int i = 0; i < alphabet.Length; i++)
    352334            {
     
    487469        }
    488470
     471//-----------------------------------------------------------------------------------------------------------------------------------------     
     472//QUICKWATCH PART--------------------------------------------------------------------------------------------------------------------------
     473
     474        /// <summary>
     475        /// Show the results in Quickwatch/Presentation
     476        /// </summary>
     477        private void showResult(String key, double IC)
     478        {
     479            ((AutokeyPresentation)Presentation).Dispatcher.BeginInvoke(DispatcherPriority.Normal, (SendOrPostCallback)delegate
     480            {
     481                ResultEntry entry = new ResultEntry();
     482                entry.Key = key;
     483                entry.IC = IC.ToString();
     484
     485                ((AutokeyPresentation)Presentation).entries.Add(entry);
     486
     487            }, null);
     488
     489        }
    489490
    490491//-----------------------------------------------------------------------------------------------------------------------------------------
     
    539540                }
    540541
    541 
    542542                IC = getIC(completeplain);                              //calculate the IC(index of coincidence)
    543 
    544                 report += key + " : " + IC + "\n";                      //the report               
    545 
     543                showResult(key, IC);                                    //show the results
     544                                               
    546545                //the decrypted cipher with the highest index of coincidence was decrypted with the correct key
    547546                if (IC > finalIC)
     
    554553        }
    555554
    556 //-----------------------------------------------------------------------------------------------------------------------------------------
    557  
    558        
    559        
     555//-----------------------------------------------------------------------------------------------------------------------------------------       
     556
    560557        #endregion
    561558
  • trunk/CrypPlugins/VigenereAutokeyAnalyser/VigenereAutokeyAnalyser.csproj

    r1597 r1649  
    9999  </ItemGroup>
    100100  <ItemGroup>
     101    <Compile Include="AutokeyPresentation.xaml.cs">
     102      <DependentUpon>AutokeyPresentation.xaml</DependentUpon>
     103    </Compile>
     104    <Compile Include="ResultEntry.cs" />
    101105    <Compile Include="VigenereAutokeyAnalyser.cs" />
    102106    <Compile Include="VigenereAutokeyAnalyserSettings.cs" />
     
    130134    <Resource Include="icon.png" />
    131135  </ItemGroup>
     136  <ItemGroup>
     137    <Page Include="AutokeyPresentation.xaml">
     138      <SubType>Designer</SubType>
     139      <Generator>MSBuild:Compile</Generator>
     140    </Page>
     141  </ItemGroup>
    132142  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    133143  <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Note: See TracChangeset for help on using the changeset viewer.