source: trunk/CrypPlugins/KeySearcher/KeySearcher.cs @ 419

Last change on this file since 419 was 419, checked in by Thomas Schmid, 12 years ago
  • merged IControl branch to trunk
  • added KeySearcher sample: KeySearcher-Sample
  • changed some plugins to work with new enumeration
  • new bins
File size: 3.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using Cryptool.PluginBase.Analysis;
6using Cryptool.PluginBase;
7using System.Windows.Controls;
8using System.ComponentModel;
9using Cryptool.PluginBase.Control;
10
11namespace KeySearcher
12{
13  [Author("Thomas Schmid", "thomas.schmid@cryptool.org", "Uni Siegen", "http://www.uni-siegen.de")]
14  [PluginInfo(false, "KeySearcher", "Demo plugin shows way to use ControlMaster", null, "KeySearcher/Images/icon.png")]
15  public class KeySearcher : IAnalysisMisc
16  {
17
18    #region IPlugin Members
19
20    public event StatusChangedEventHandler OnPluginStatusChanged;
21
22    public event GuiLogNotificationEventHandler OnGuiLogNotificationOccured;
23
24    public event PluginProgressChangedEventHandler OnPluginProgressChanged;
25
26    private KeySearcherSettings settings = new KeySearcherSettings();
27    public ISettings Settings
28    {
29      get { return settings; }
30    }
31
32    public UserControl Presentation
33    {
34      get { return null; }
35    }
36
37    public UserControl QuickWatchPresentation
38    {
39      get { return null; }
40    }
41
42    public void PreExecution()
43    {
44    }
45
46    public void Execute()
47    {
48    }
49
50    public void PostExecution()
51    {
52    }
53
54    public void Pause()
55    {
56    }
57
58    public void Stop()
59    {
60    }
61
62    public void Initialize()
63    {
64    }
65
66    public void Dispose()
67    {
68    }
69
70    #endregion
71
72    #region INotifyPropertyChanged Members
73
74    public event PropertyChangedEventHandler PropertyChanged;
75
76    private void NotifyPropertyChanged(string property)
77    {
78      if (PropertyChanged != null)
79        PropertyChanged(this, new PropertyChangedEventArgs(property));
80    }
81
82    #endregion
83
84    #region IControlEncryption Members
85
86    private IControlEncryption testProperty;
87    [PropertyInfo(Direction.ControlMaster, "Test IControlEncryption Master", "Tooltip1", "", DisplayLevel.Beginner)]
88    public IControlEncryption TestProperty
89    {
90      get { return testProperty; }
91      set
92      {
93        if (value != null)
94        {
95          testProperty = value;
96          int keySize = 8;
97          int ivSize = 8;
98          int end = 255;
99          string secret = "Hallo Welt!";
100
101          byte[] testKey = new byte[keySize];
102          byte[] searchKey = new byte[keySize];
103          byte[] iv = new byte[ivSize];
104          Random ran = new Random();
105          for (int i = 0; i < keySize; i++)
106          {
107            testKey[i] = (byte)ran.Next(end);
108            searchKey[i] = testKey[i];
109            iv[i] = (byte)ran.Next(end);
110          }
111
112          byte[] testData = Encoding.Default.GetBytes(secret);
113          byte[] dataEncrypted = testProperty.Encrypt(testKey, testData, iv);
114
115
116          for (int i = 0; i < end; i++)
117          {
118            searchKey[0] = (byte)i;
119            byte[] dataDecrypted = testProperty.Decrypt(searchKey, dataEncrypted, iv);
120            string test = Encoding.Default.GetString(dataDecrypted);
121            if (test.Contains(secret))
122            {
123              GuiLogMessage("Found key: " + i.ToString(), NotificationLevel.Info);
124              break;
125            }
126          }
127          // key found
128        }
129      }
130    }
131
132    private void GuiLogMessage(string message, NotificationLevel loglevel)
133    {
134      if (OnGuiLogNotificationOccured != null)
135        OnGuiLogNotificationOccured(this, new GuiLogEventArgs(message, this, loglevel));
136    }
137
138    #endregion
139  }
140}
Note: See TracBrowser for help on using the repository browser.