Changeset 786 for trunk/CrypPlugins/DES


Ignore:
Timestamp:
Oct 27, 2009, 12:56:23 PM (12 years ago)
Author:
kopal
Message:
  • AES now works with the KeySearcher
  • Added sample for key searching with AES
  • Some Bug fixes on DES with KeySearcher
File:
1 edited

Legend:

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

    r785 r786  
    181181                if (controlSlave is object && InputStream is object && InputIV is object)
    182182                {
     183                    ((DESControl)controlSlave).reset();
    183184                    ((DESControl)controlSlave).onStatusChanged();
    184185
     
    188189            {
    189190                if (controlSlave is object && ((DESControl)controlSlave).InputStream is object)
    190                     ((DESControl)controlSlave).InputStream.Close();
     191                    ((DESControl)controlSlave).closeStreams();
    191192                InputStream = null;
    192193                OutputStream = null;
     
    411412        private DES plugin;
    412413        private SymmetricAlgorithm des_algorithm = null;
    413        
     414        private byte[] input;
     415        private Stream inputStream;
     416 
    414417        public CryptoolStream InputStream{
    415418            get;set;
    416419        }
    417420
     421        public void reset()
     422        {
     423            input = null;
     424            des_algorithm = null;
     425        }
     426
     427        public void closeStreams()
     428        {
     429            if (inputStream != null)
     430                inputStream.Close();
     431            if (InputStream != null)
     432                InputStream.Close();
     433        }
     434
    418435        public DESControl(DES Plugin)
    419436        {
     
    432449        {
    433450            int size = (int)this.InputStream.Length;
     451           
    434452            if (blocksize < size)
    435453                size = blocksize;
    436 
    437             byte[] input = new byte[size];
    438             this.InputStream.Seek(0, 0);
    439             for (int i = 0; i < size && i < this.InputStream.Length; i++)
    440                 input[i] = (byte)this.InputStream.ReadByte();
    441 
    442             Stream inputStream = new MemoryStream(input);           
    443                        
    444             CryptoStream p_crypto_stream = null;
     454           
     455            if (!(this.input is object))
     456            {
     457                input = new byte[size];
     458                this.InputStream.Seek(0, 0);
     459                for (int i = 0; i < size && i < this.InputStream.Length; i++)
     460                    input[i] = (byte)this.InputStream.ReadByte();
     461                inputStream = new MemoryStream(input);
     462            }
     463            inputStream.Seek(0, 0);
     464                       
     465            CryptoStream crypto_stream = null;
    445466            byte[] output = new byte[blocksize];
    446467
     
    468489                }
    469490
    470                 p_crypto_stream = new CryptoStream((Stream)inputStream, p_decryptor, CryptoStreamMode.Read);
     491                crypto_stream = new CryptoStream((Stream)inputStream, p_decryptor, CryptoStreamMode.Read);
    471492
    472493                byte[] buffer = new byte[des_algorithm.BlockSize / 8];
     
    474495                int position = 0;
    475496
    476                 while ((bytesRead = p_crypto_stream.Read(buffer, 0, buffer.Length)) > 0 && !plugin.isStopped())
     497                while ((bytesRead = crypto_stream.Read(buffer, 0, buffer.Length)) > 0 && !plugin.isStopped())
    477498                {
    478499                    for (int i = 0; i < bytesRead; i++)
     
    490511                }
    491512
    492                 p_crypto_stream.Flush();
    493513
    494514            }
     
    497517                des_algorithm = null;   // we got an exception so we do not use this object any more
    498518                throw exception;
    499             }
    500             finally
    501             {
    502                 if(inputStream != null)
    503                     inputStream.Close();
    504             }
     519            }           
    505520
    506521            return output;
Note: See TracChangeset for help on using the changeset viewer.