Changeset 1194


Ignore:
Timestamp:
Feb 26, 2010, 1:46:08 AM (12 years ago)
Author:
Sven Rech
Message:

added IV to the IControlEncryption interface

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPluginBase/Control/IControlEncryption.cs

    r1162 r1194  
    2525    {
    2626        byte[] Encrypt(byte[] key, int blocksize);
    27         byte[] Decrypt(byte[] ciphertext, byte[] key, int bytesToUse);
    28         byte[] Decrypt(byte[] ciphertext, byte[] key);
     27        byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV, int bytesToUse);
     28        byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV);
    2929        string getKeyPattern();
    3030        byte[] getKeyFromString(string key, ref int[] arrayPointers, ref int[] arraySuccessors, ref int[] arrayUppers);
  • trunk/CrypPlugins/AES/AES.cs

    r1193 r1194  
    497497        }
    498498
    499         public byte[] Decrypt(byte[] ciphertext, byte[] key)
    500         {
    501             return Decrypt(ciphertext, key, ciphertext.Length);
    502         }
    503 
    504         public byte[] Decrypt(byte[] ciphertext, byte[] key, int bytesToUse)
     499        public byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV)
     500        {
     501            return Decrypt(ciphertext, key, IV, ciphertext.Length);
     502        }
     503
     504        public byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV, int bytesToUse)
    505505        {
    506506            int size = bytesToUse > ciphertext.Length ? ciphertext.Length : bytesToUse;
     
    527527                fixed (byte* inp = ciphertext)
    528528                fixed (byte* akey = key)
     529                fixed (byte* iv = IV)
    529530                {
    530                     return NativeCryptography.Crypto.decryptAES(inp, akey, bits, size, ((AESSettings)plugin.Settings).Mode);
     531                    return NativeCryptography.Crypto.decryptAES(inp, akey, iv, bits, size, ((AESSettings)plugin.Settings).Mode);
    531532                }
    532533            }
  • trunk/CrypPlugins/DES/DES.cs

    r1193 r1194  
    546546        }
    547547
    548         public byte[] Decrypt(byte[] ciphertext, byte[] key)
    549         {
    550             return Decrypt(ciphertext, key, ciphertext.Length);
     548        public byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV)
     549        {
     550            return Decrypt(ciphertext, key, IV, ciphertext.Length);
    551551        }
    552552
    553553        // TODO: add override with iv, mode, blocksize
    554         public byte[] Decrypt(byte[] ciphertext, byte[] key, int bytesToUse)
     554        public byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV, int bytesToUse)
    555555        {
    556556            int size = bytesToUse > ciphertext.Length ? ciphertext.Length : bytesToUse;
     
    560560                fixed (byte* inp = ciphertext)
    561561                fixed (byte* akey = key)
    562                 {
    563                     return NativeCryptography.Crypto.decryptDES(inp, akey, size, ((DESSettings)plugin.Settings).Mode);
     562                fixed (byte* iv = IV)
     563                {
     564                    return NativeCryptography.Crypto.decryptDES(inp, akey, iv, size, ((DESSettings)plugin.Settings).Mode);
    564565                }
    565566            }
  • trunk/CrypPlugins/KeySearcher/KeySearcher.cs

    r1172 r1194  
    456456                if (this.encryptedData != null && this.encryptedData.Length > 0)
    457457                {
    458                     valueKey.decryption = sender.Decrypt(this.encryptedData, keya, bytesToUse);
     458                    valueKey.decryption = sender.Decrypt(this.encryptedData, keya, InitVector, bytesToUse);
    459459                }
    460460                else
  • trunk/CrypPlugins/SDES/SDES.cs

    r1162 r1194  
    593593        /// <param name="bytesToUse">bytesToUse</param>
    594594        /// <returns>decrypted text</returns>
    595         public byte[] Decrypt(byte[] ciphertext, byte[] key, int bytesToUse)
     595        public byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV, int bytesToUse)
    596596        {
    597597            return execute(ciphertext, key, bytesToUse, 1);
     
    604604        /// <param name="key">key</param>
    605605        /// <returns>decrypted text</returns>
    606         public byte[] Decrypt(byte[] ciphertext, byte[] key)
     606        public byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV)
    607607        {
    608608            return execute(ciphertext, key, ciphertext.Length, 1);
     
    615615        /// <param name="bytesToUse">bytesToUse</param>
    616616        /// <returns>decrypted text</returns>
    617         public byte[] Decrypt(byte[] key, int bytesToUse)
     617        public byte[] Decrypt(byte[] key, byte[] IV, int bytesToUse)
    618618        {
    619619            return execute(key, bytesToUse, 1);
  • trunk/CrypPlugins/Transposition/Transposition.cs

    r1164 r1194  
    11281128        }
    11291129
    1130         public byte[] Decrypt(byte[] ciphertext, byte[] key, int bytesToUse)
    1131         {
    1132             return Decrypt(ciphertext, key);
    1133         }
    1134 
    1135         public byte[] Decrypt(byte[] ciphertext, byte[] key)
     1130        public byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV, int bytesToUse)
     1131        {
     1132            return Decrypt(ciphertext, key, IV);
     1133        }
     1134
     1135        public byte[] Decrypt(byte[] ciphertext, byte[] key, byte[] IV)
    11361136        {
    11371137            if (plugin.Input != ciphertext)
  • trunk/CrypPlugins/TranspositionAnalyser/TranspositionAnalyser.cs

    r1123 r1194  
    352352                                    b[j] = Convert.ToByte(key[j]);
    353353                                }
    354                                 byte[] dec = sender.Decrypt(input, b);
     354                                byte[] dec = sender.Decrypt(input, b, null);
    355355                                if (dec != null)
    356356                                {
  • trunk/NativeCryptography/NativeCryptography.h

    r1193 r1194  
    2626
    2727        public:
    28                 static array<unsigned char>^ decryptAES(unsigned char* input, unsigned char* key, const int bits, const int length, const int mode)
     28                static array<unsigned char>^ decryptAES(unsigned char* input, unsigned char* key, unsigned char* IV, const int bits, const int length, const int mode)
    2929                {
    3030                        const int blockSize = 16;
     
    3939                        {
    4040                                AES_set_encrypt_key(key, bits, &aeskey);
    41                                 unsigned char iv[blockSize];
    42                                 for (int i = 0; i < blockSize; i++)
    43                                 {
    44                                         iv[i] = 0;
    45                                 }
    4641
    47                                 AES_encrypt(iv, outp, &aeskey);
     42                                AES_encrypt(IV, outp, &aeskey);
    4843                                xorBlockAES((int*)(outp), (int*)(input));
    4944
     
    5853                                AES_set_decrypt_key(key, bits, &aeskey);
    5954                                AES_decrypt(input, outp, &aeskey);
     55                                if (mode == 1)          //CBC
     56                                        xorBlockAES((int*)(outp), (int*)IV);   
    6057                                for (int c = 1; c < numBlocks; c++)
    6158                                {
     
    7370                }
    7471
    75                 static array<unsigned char>^ decryptDES(unsigned char* input, unsigned char* key, const int length, const int mode)
     72                static array<unsigned char>^ decryptDES(unsigned char* input, unsigned char* key, unsigned char* IV, const int length, const int mode)
    7673                {
    7774                        const int blockSize = 8;
     
    8784                        if (mode == 2)  //CFB
    8885                        {                               
    89                                 unsigned char iv[blockSize];
    90                                 for (int i = 0; i < blockSize; i++)
    91                                 {
    92                                         iv[i] = 0;
    93                                 }
    94 
    95                                 DES_ecb_encrypt((const_DES_cblock*)iv, (const_DES_cblock*)outp, &deskey, DES_ENCRYPT);
     86                                DES_ecb_encrypt((const_DES_cblock*)IV, (const_DES_cblock*)outp, &deskey, DES_ENCRYPT);
    9687                                xorBlockAES((int*)(outp), (int*)(input));
    9788
     
    10596                        {
    10697                                DES_ecb_encrypt((const_DES_cblock*)input, (const_DES_cblock*)outp, &deskey, DES_DECRYPT);
     98                                if (mode == 1)          //CBC
     99                                        xorBlockDES((int*)(outp), (int*)IV);   
    107100                                for (int c = 1; c < numBlocks; c++)
    108101                                {
Note: See TracChangeset for help on using the changeset viewer.