Changeset 717 for trunk/CrypPlugins/SDES


Ignore:
Timestamp:
Oct 13, 2009, 1:09:46 PM (12 years ago)
Author:
Sven Rech
Message:

some KeySearcher changes

File:
1 edited

Legend:

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

    r716 r717  
    4444        #endregion
    4545
     46        public bool InputChanged
     47        { get; set; }
     48
    4649        public SDES()
    4750        {
     51            InputChanged = false;
    4852            this.settings = new SDESSettings();
    4953            this.settings.OnPluginStatusChanged += settings_OnPluginStatusChanged;
     
    140144            set
    141145            {
     146                InputChanged = true;
    142147                this.inputKey = value;
    143148                OnPropertyChanged("InputKey");
     
    351356                }
    352357                listCryptoolStreamsOut.Clear();
     358
     359                if (controlSlave != null)
     360                    controlSlave.Dispose();
    353361               
    354362            }
     
    440448        public event IControlStatusChangedEventHandler OnStatusChanged;
    441449        private SDES plugin;
     450        private CryptoolStream input;
     451        private List<CryptoolStream> listCryptoolStreams = new List<CryptoolStream>();
    442452
    443453        public SDESControl(SDES Plugin)
     
    456466        #region IControlEncryption Members
    457467
    458         public byte[] Encrypt(byte[] key)
     468        public byte[] Encrypt(byte[] key, int blocksize)
    459469        {
    460470            ((SDESSettings)plugin.Settings).Action = 0;
    461             return execute(key);
    462         }
    463 
    464         public byte[] Decrypt(byte[] key)
     471            return execute(key, blocksize);
     472        }
     473
     474        public byte[] Decrypt(byte[] key, int blocksize)
    465475        {
    466476            ((SDESSettings)plugin.Settings).Action = 1;
    467             return execute(key);
     477            return execute(key, blocksize);
    468478        }
    469479
     
    485495        }
    486496
    487         private byte[] execute(byte[] key)
    488         {
     497        private byte[] execute(byte[] key, int blocksize)
     498        {
     499            if (input == null || plugin.InputChanged)
     500            {
     501                plugin.InputChanged = false;
     502                input = new CryptoolStream();
     503                input.OpenRead(plugin.InputStream.FileName);
     504                if(blocksize <= input.Length)
     505                    input.SetLength(blocksize);
     506                listCryptoolStreams.Add(input);
     507            }
     508
    489509            plugin.InputKey = key;
    490510            CryptoolStream output = new CryptoolStream();
     
    495515            {               
    496516                ElectronicCodeBook ecb = new ElectronicCodeBook(plugin);
    497                 ecb.decrypt(plugin.InputStream, output, key);
     517                ecb.decrypt(input, output, key);
    498518            }
    499519            else
    500520            {
    501521                CipherBlockChaining cbc = new CipherBlockChaining(plugin);
    502                 cbc.decrypt(plugin.InputStream, output, key, Tools.stringToBinaryByteArray(enc.GetString(plugin.InputIV)));
     522                cbc.decrypt(input, output, key, Tools.stringToBinaryByteArray(enc.GetString(plugin.InputIV)));
    503523            }           
    504524
     
    510530            output.Close();
    511531            return byteValues;
     532        }
     533
     534        public void Dispose()
     535        {
     536            foreach (CryptoolStream cs in listCryptoolStreams)
     537                cs.Close();
    512538        }
    513539
Note: See TracChangeset for help on using the changeset viewer.