Changeset 782


Ignore:
Timestamp:
Oct 26, 2009, 6:08:34 PM (12 years ago)
Author:
kohnen
Message:
  • text-keywords may be used
  • double transposition added
Location:
trunk
Files:
1 added
3 edited

Legend:

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

    r781 r782  
    2020        # region Private variables
    2121
    22         private String keyword;
    23         private String input;
    24         private String output;
     22        private String keyword = "";
     23        private String dpkeyword = "";
     24        private String input = "";
     25        private String output = "";
    2526        private TranspositionSettings settings;
    2627
     
    3031        {
    3132            this.settings = new TranspositionSettings();
    32             keyword = "";
    33             input = "";
    34             output = "";
    3533        }
    3634
     
    7371        }
    7472
     73        [PropertyInfo(Direction.InputData, "Double transposition keyword", "double transposition keyword", "Keyword ued for double transposition. If empty, the first keyword is used for the second transposition, too.", DisplayLevel.Beginner)]
     74        public string DoubleTransposition
     75        {
     76            get
     77            {
     78                return this.dpkeyword;
     79            }
     80            set
     81            {
     82                this.dpkeyword = value;
     83                OnPropertyChange("DoubleTransposition");
     84            }
     85        }
     86
     87
    7588        [PropertyInfo(Direction.OutputData, "Output", "output", "", DisplayLevel.Beginner)]
    7689        public string Output
     
    164177        private void ProcessTransposition()
    165178        {
    166             switch (settings.Action)
    167             {
    168                 case 0:
    169                     Output = encrypt();
    170                     break;
    171                 case 1:
    172                     Output = decrypt();
    173                     break;
    174                 default:
    175                     break;
    176             }
    177 
    178 
    179             ProgressChanged(1, 1);
    180         }
    181 
    182         private String encrypt()
    183         {
    184             int[] key = get_Keyword_Array(keyword);
    185             if (key != null && input != null)
     179            try
     180            {
     181                int[] key = null;
     182                int[] dpkey = null;
     183
     184                if (keyword.Contains('1'))
     185                {
     186                    key = get_Keyword_Array(keyword);
     187                }
     188
     189                else
     190                {
     191                    key = sortKey(keyword);
     192                }
     193
     194
     195                if (DoubleTransposition == null || DoubleTransposition.Equals(""))
     196                {
     197                    dpkey = key;
     198                }
     199
     200                else
     201                {
     202                    if (dpkeyword.Contains('1'))
     203                    {
     204                        dpkey = get_Keyword_Array(dpkeyword);
     205                    }
     206
     207                    else
     208                    {
     209                        dpkey = sortKey(dpkeyword);
     210                    }
     211                }
     212
     213                if (settings.DoubleTransposition)
     214                {
     215                    switch (settings.Action)
     216                    {
     217                        case 0:
     218                            String enc_tmp = encrypt(input, key);
     219                            Output = encrypt(enc_tmp, dpkey);
     220                            break;
     221
     222                        case 1:
     223                            String dec_tmp = decrypt(input, dpkey);
     224                            Output = decrypt(dec_tmp, key);
     225                            break;
     226
     227                        default:
     228                            break;
     229                    }
     230                }
     231
     232                else
     233                {
     234                    switch (settings.Action)
     235                    {
     236
     237                        case 0:
     238                            Output = encrypt(input, key);
     239                            break;
     240                        case 1:
     241                            Output = decrypt(input, key);
     242                            break;
     243                        default:
     244                            break;
     245                    }
     246                }
     247
     248                ProgressChanged(1, 1);
     249            }
     250
     251            catch (Exception)
     252            {
     253                Transposition_LogMessage("Keyword is not valid", NotificationLevel.Error);
     254                Output = "";
     255            }
     256        }
     257
     258        private String encrypt(String input, int[] key)
     259        {
     260            if (key != null && input != null && key.Length>0)
    186261            {
    187262                if (is_Valid_Keyword(key))
     
    238313        }
    239314
    240         private String decrypt()
    241         {
    242             int[] key = get_Keyword_Array(keyword);
    243             if (key != null && input != null)
     315        private String decrypt(String input, int[] key)
     316        {
     317            if (key != null && input != null && key.Length>0)
    244318            {
    245319                if (is_Valid_Keyword(key))
     
    623697                 public int[] sortKey(String input)
    624698        {
    625             String key = input;
    626             Char[] keyChars = key.ToCharArray();
    627             Char[] orgChars = key.ToCharArray();
    628             int[] rank = new int[keyChars.Length];
    629             Array.Sort(keyChars);
    630 
    631             for (int i = 0; i < orgChars.Length; i++)
    632             {
    633                 rank[i] = (Array.IndexOf(keyChars, orgChars[i])) + 1;
    634                 keyChars[Array.IndexOf(keyChars, orgChars[i])] = (char)0;
    635             }
    636 
    637             return rank;
     699            if (input != null && !input.Equals(""))
     700            {
     701                String key = input;
     702                Char[] keyChars = key.ToCharArray();
     703                Char[] orgChars = key.ToCharArray();
     704                int[] rank = new int[keyChars.Length];
     705                Array.Sort(keyChars);
     706
     707                for (int i = 0; i < orgChars.Length; i++)
     708                {
     709                    rank[i] = (Array.IndexOf(keyChars, orgChars[i])) + 1;
     710                    keyChars[Array.IndexOf(keyChars, orgChars[i])] = (char)0;
     711                }
     712
     713                return rank;
     714            }
     715            return null;
    638716        }
    639717
  • trunk/CrypPlugins/Transposition/Transposition.csproj

    r778 r782  
    6464  </ItemGroup>
    6565  <ItemGroup>
    66     <Resource Include="Images\icon.png" />
    67   </ItemGroup>
    68   <ItemGroup>
    6966    <Resource Include="Images\decrypt.png" />
    70   </ItemGroup>
    71   <ItemGroup>
    7267    <Resource Include="Images\encrypt.png" />
     68    <Resource Include="Images\icon.PNG" />
    7369  </ItemGroup>
    7470  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  • trunk/CrypPlugins/Transposition/TranspositionSettings.cs

    r778 r782  
    1313
    1414        private Boolean hasChanges = false;
     15        private Boolean doubleTransposition = false;
    1516        private int selectedAction = 0;
    1617
     
    9798            }
    9899        }
    99        
     100
     101        [PropertySaveOrder(5)]
     102        [ContextMenu("Double Transposition", "Select this, if u want to compute the double transposition.", 5, DisplayLevel.Beginner, ContextMenuControlType.CheckBox, null, "Double Transposition")]
     103        [TaskPane("Double Transposition", "Select this, if u want to compute the double transposition.", null, 5, false, DisplayLevel.Expert, ControlType.CheckBox, "")]
     104        public bool DoubleTransposition
     105        {
     106            get { return this.doubleTransposition; }
     107            set
     108            {
     109                if (value != this.doubleTransposition) HasChanges = true;
     110                this.doubleTransposition = value;
     111                OnPropertyChanged("DoubleTransposition");
     112            }
     113        }
     114
     115
    100116        protected void OnPropertyChanged(string name)
    101117        {
Note: See TracChangeset for help on using the changeset viewer.