Changeset 676 for trunk/CrypPlugins/SDES


Ignore:
Timestamp:
Oct 7, 2009, 3:39:26 PM (12 years ago)
Author:
Sven Rech
Message:

KeySearcher is now able to try all keys
(only works properly with SDES right now)
(error when trying to save the workspace)

+ a very small QuadraticSieve fix

File:
1 edited

Legend:

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

    r513 r676  
    372372        #endregion
    373373
     374        private IControlEncryption controlSlave;
     375        [PropertyInfo(Direction.ControlSlave, "SDES Slave", "Direct access to SDES.", "", DisplayLevel.Beginner)]
     376        public IControlEncryption ControlSlave
     377        {
     378            get
     379            {
     380                if (controlSlave == null)
     381                    controlSlave = new SDESControl(this);
     382                return controlSlave;
     383            }
     384        } 
     385
    374386        #region INotifyPropertyChanged Members
    375387
     
    419431    public class SDESControl : IControlEncryption
    420432    {
    421       private SDES plugin;
    422 
    423       public SDESControl(SDES Plugin)
    424       {
    425         this.plugin = Plugin;
    426       }
    427 
    428       #region IControlEncryption Members
    429 
    430       public byte[] Encrypt(byte[] key, byte[] data, byte[] iv)
    431       {
    432         ((SDESSettings)plugin.Settings).Action = 0;
    433         return execute(key, data, iv);
    434       }
    435 
    436       public byte[] Decrypt(byte[] key, byte[] data, byte[] iv)
    437       {
    438         ((SDESSettings)plugin.Settings).Action = 1;
    439         return execute(key, data, iv);
    440       }
    441 
    442       private byte[] execute(byte[] key, byte[] data, byte[] iv)
    443       {
    444         plugin.InputKey = key;
    445         plugin.InputIV = iv;
    446         CryptoolStream cs = new CryptoolStream();
    447         cs.OpenRead(this.GetType().Name, data);
    448         plugin.InputStream = cs;
    449         plugin.Execute();
    450         CryptoolStream output = plugin.OutputStream;
    451 
    452         byte[] byteValues = new byte[output.Length];
    453         int bytesRead;
    454         output.Seek(0, SeekOrigin.Begin);
    455         bytesRead = output.Read(byteValues, 0, byteValues.Length);
    456         plugin.Dispose();
    457         cs.Close();
    458         output.Close();
    459         return byteValues;
    460       }
    461 
    462       #endregion
     433        private SDES plugin;
     434
     435        public SDESControl(SDES Plugin)
     436        {
     437            this.plugin = Plugin;
     438        }
     439
     440        #region IControlEncryption Members
     441
     442        public byte[] Encrypt(byte[] key)
     443        {
     444            ((SDESSettings)plugin.Settings).Action = 0;
     445            return execute(key);
     446        }
     447
     448        public byte[] Decrypt(byte[] key)
     449        {
     450            ((SDESSettings)plugin.Settings).Action = 1;
     451            return execute(key);
     452        }
     453
     454        public string getKeyPattern()
     455        {
     456            return "[01][01][01][01][01][01][01][01][01][01]";
     457        }
     458
     459        public byte[] getKeyFromString(string key)
     460        {
     461            byte[] bkey = new byte[10];
     462            int count = 0;
     463            foreach (char c in key)
     464                if (c == '0')
     465                    bkey[count++] = (byte)'0';
     466                else
     467                    bkey[count++] = (byte)'1';
     468            return bkey;
     469        }
     470
     471        private byte[] execute(byte[] key)
     472        {
     473            plugin.InputKey = key;
     474            CryptoolStream output = new CryptoolStream();
     475            output.OpenWrite();
     476
     477            System.Text.ASCIIEncoding enc = new System.Text.ASCIIEncoding();
     478            if (((SDESSettings)plugin.Settings).Mode == 0)
     479            {               
     480                ElectronicCodeBook ecb = new ElectronicCodeBook(plugin);
     481                ecb.decrypt(plugin.InputStream, output, key);
     482            }
     483            else
     484            {
     485                CipherBlockChaining cbc = new CipherBlockChaining(plugin);
     486                cbc.decrypt(plugin.InputStream, output, key, Tools.stringToBinaryByteArray(enc.GetString(plugin.InputIV)));
     487            }           
     488
     489            byte[] byteValues = new byte[output.Length];
     490            int bytesRead;
     491            output.Seek(0, SeekOrigin.Begin);
     492            bytesRead = output.Read(byteValues, 0, byteValues.Length);
     493            plugin.Dispose();
     494            output.Close();
     495            return byteValues;
     496        }
     497
     498        #endregion
    463499    }
    464500
Note: See TracChangeset for help on using the changeset viewer.