Ignore:
Timestamp:
Mar 16, 2009, 3:30:08 AM (13 years ago)
Author:
enkler
Message:

Implemented SkyTale
Added SkyTale-Demo

Location:
trunk/CrypPlugins/CaesarAnalysisHelper
Files:
2 edited

Legend:

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

    r243 r246  
    99namespace Cryptool.CaesarAnalysisHelper
    1010{
    11     class FrequencyObject
    12     {
    13         public char Char { get; set; }
    14         public int Frequency { get; set; }
    15     }
    16 
    1711    [Author("Fabian Enkler", "", "", "")]
    1812    [PluginInfo(false, "CaesarAnalysisHelper", "This plugin is designed in order to make a cryptanalysis of a caesarcipher based on the frequency test.", "", "CaesarAnalysisHelper/icon.png")]
     
    3630        }
    3731
     32        private string encryptedText;
     33        [PropertyInfo(Direction.Input, "Encrypted text", "The caesar encrpyted text", null, false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
     34        public string EncryptedText
     35        {
     36            get { return encryptedText; }
     37            set
     38            {
     39                encryptedText = value;
     40                OnPropertyChanged("EncryptedText");
     41            }
     42        }
     43
    3844        private string frequencyList = string.Empty;
    3945        [PropertyInfo(Direction.Input, "Frequency List", "This is the analysis input from the frequency test.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text,
     
    4955        }
    5056
    51         private string encryptedText;
    52         [PropertyInfo(Direction.Input, "Encrypted text", "The caesar encrpyted text", null, false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
    53         public string EncryptedText
    54         {
    55             get { return encryptedText; }
    56             set
    57             {
    58                 encryptedText = value;
    59                 OnPropertyChanged("EncryptedText");
    60             }
    61         }
    62 
    6357        /*private string dictionary;
    6458        [PropertyInfo(Direction.Input, "Dictionary", "Dictionary for Bruteforce attack", null, false, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
     
    8377                OnPropertyChanged("BruteForceDecryptedText");
    8478            }
    85         }
    86 
    87         private string bruteForceEncryptedText;
     79        }*/
     80
     81        private int key;
     82        [PropertyInfo(Direction.Output, "Key", "This is the estimated key.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
     83        public int Key
     84        {
     85            get
     86            {
     87                return key;
     88            }
     89        }
     90
     91        /*private string bruteForceEncryptedText;
    8892        [PropertyInfo(Direction.Output, "Bruteforce encrypted text", "This the text, which should be encrypted by the caesar plugin with bruteforce.", null, false, false, DisplayLevel.Professional, QuickWatchFormat.Text, null)]
    8993        public string BruteForceEnCryptedText
     
    109113        }*/
    110114
    111         private int key;
    112         [PropertyInfo(Direction.Output, "Key", "This is the estimated key.", "", true, false, DisplayLevel.Beginner, QuickWatchFormat.Text, null)]
    113         public int Key
    114         {
    115             get
    116             {
    117                 return key;
    118             }
    119         }
    120 
    121115        public void CryptoAnalysis()
    122116        {
     
    138132
    139133            Counter = 0;
    140             foreach (var i in CountBigrams2(encryptedText))
     134            foreach (var i in CountBigrams(encryptedText))
    141135            {
    142136                if (Counter < 5)
     
    178172                    {
    179173                        string[] tmpArr = s.Split(new[] { ':' });
    180                         if (tmpArr.Length > 0)
     174                        if (tmpArr.Length > 1)
    181175                        {
    182176
     
    207201        }
    208202
    209         private List<int> CountBigrams2(string text)
     203        private static List<int> CountBigrams(string text)
    210204        {
    211205            if (!string.IsNullOrEmpty(text))
     
    268262        }
    269263
    270         private List<int> CountBigrams(string text)
    271         {
    272             if (!string.IsNullOrEmpty(text))
    273             {
    274                 var BigramList = new List<string>();
    275 
    276                 for (int i = 0; i < text.Length - 1; i++)
    277                 {
    278                     string tmp = text.Substring(i, 2);
    279                     BigramList.Add(tmp);
    280                 }
    281                 var Result = new List<int>();
    282                 var KeyList = new Dictionary<int, int>();
    283                 foreach (var c in BigramList)
    284                 {
    285                     int Distance = c[0] - c[1];
    286                     if (Distance < 0)
    287                         Distance = c[1] - c[0];
    288                     int tmpKey;
    289                     switch (Distance)
    290                     {
    291                         case 'n' - 'e':
    292                             tmpKey = c[0] - 'e';
    293                             if (c[0] - 'e' == c[1] - 'n')
    294                             {
    295                                 if (!KeyList.ContainsKey(tmpKey))
    296                                     KeyList.Add(tmpKey, 0);
    297                                 KeyList[tmpKey]++;
    298                             }
    299                             break;
    300                         case 'r' - 'e':
    301                             tmpKey = c[0] - 'e';
    302                             if (c[0] - 'e' == c[1] - 'r')
    303                             {
    304                                 if (!KeyList.ContainsKey(tmpKey))
    305                                     KeyList.Add(tmpKey, 0);
    306                                 KeyList[tmpKey]++;
    307                             }
    308                             break;
    309                         case 'h' - 'c':
    310                             tmpKey = c[0] - 'c';
    311                             if (c[0] - 'c' == c[1] - 'h')
    312                             {
    313                                 if (!KeyList.ContainsKey(tmpKey))
    314                                     KeyList.Add(tmpKey, 0);
    315                                 KeyList[tmpKey]++;
    316                             }
    317                             break;
    318                         case 'i' - 'e':
    319                             if (c[0] < c[1])
    320                             {
    321                                 tmpKey = c[0] - 'e';
    322                                 if (c[0] - 'e' == c[1] - 'i')
    323                                 {
    324                                     if (!KeyList.ContainsKey(tmpKey))
    325                                         KeyList.Add(tmpKey, 0);
    326                                     KeyList[tmpKey]++;
    327                                 }
    328                             }
    329                             else
    330                             {
    331                                 tmpKey = c[0] - 'i';
    332                                 if (c[0] - 'i' == c[1] - 'e')
    333                                 {
    334                                     if (!KeyList.ContainsKey(tmpKey))
    335                                         KeyList.Add(tmpKey, 0);
    336                                     KeyList[tmpKey]++;
    337                                 }
    338                             }
    339 
    340                             break;
    341                         case 't' - 'e':
    342                             tmpKey = c[0] - 't';
    343                             if (c[0] - 't' == c[1] - 'e')
    344                             {
    345                                 if (!KeyList.ContainsKey(tmpKey))
    346                                     KeyList.Add(tmpKey, 0);
    347                                 KeyList[tmpKey]++;
    348                             }
    349                             break;
    350                         case 'e' - 'd':
    351                             tmpKey = c[0] - 'd';
    352                             if (c[0] - 'd' == c[1] - 'e')
    353                             {
    354                                 if (!KeyList.ContainsKey(tmpKey))
    355                                     KeyList.Add(tmpKey, 0);
    356                                 KeyList[tmpKey]++;
    357                             }
    358                             break;
    359                     }
    360                 }
    361 
    362                 var items2 = (from k in KeyList.Keys
    363                               orderby KeyList[k] descending
    364                               select k);
    365                 foreach (var s in items2)
    366                 {
    367                     Result.Add(s);
    368                 }
    369 
    370                 return Result;
    371             }
    372             return new List<int>();
    373         }
    374 
    375 
    376 
    377 
    378 
    379 
    380 
    381264        public UserControl Presentation
    382265        {
     
    434317        }
    435318
     319/*
    436320        private void GuiNotification(string text)
    437321        {
    438322            GuiNotification(text, NotificationLevel.Debug);
    439323        }
    440 
     324*/
     325
     326/*
    441327        private void GuiNotification(string text, NotificationLevel Level)
    442328        {
     
    444330                OnGuiLogNotificationOccured(this, new GuiLogEventArgs(text, this, Level));
    445331        }
     332*/
    446333    }
    447334}
  • trunk/CrypPlugins/CaesarAnalysisHelper/CaesarAnalysisHelperSettings.cs

    r244 r246  
    1919        private Language Lang = Language.German;
    2020
     21        //[ContextMenu("Language", "The Language", 0, DisplayLevel.Beginner, ContextMenuControlType.ComboBox, null, new[] { "German", "English", "French", "Spanish" })]
    2122        [TaskPane("Language", "The text's language.", null, 0, false, DisplayLevel.Beginner, ControlType.ComboBox, new[] { "German", "English", "French", "Spanish" })]
    2223        public string TextLanguage
Note: See TracChangeset for help on using the changeset viewer.