Changeset 1192


Ignore:
Timestamp:
Feb 25, 2010, 11:50:27 PM (12 years ago)
Author:
Sven Rech
Message:

aes and des bruteforce supports CBC and ECB now (CBF still missing)

Location:
trunk
Files:
3 edited

Legend:

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

    r1175 r1192  
    523523                return null;
    524524
    525             return NativeCryptography.Crypto.decryptAES(ciphertext, key, bits, size);
     525            return NativeCryptography.Crypto.decryptAES(ciphertext, key, bits, size, ((AESSettings)plugin.Settings).Mode);
    526526        }
    527527
  • trunk/CrypPlugins/DES/DES.cs

    r1191 r1192  
    556556            int size = bytesToUse > ciphertext.Length ? ciphertext.Length : bytesToUse;
    557557
    558             return NativeCryptography.Crypto.decryptDES(ciphertext, key, size);
     558            return NativeCryptography.Crypto.decryptDES(ciphertext, key, size, ((DESSettings)plugin.Settings).Mode);
    559559        }
    560560
  • trunk/NativeCryptography/NativeCryptography.h

    r1191 r1192  
    2828                }
    2929
    30                 static void xorBlock(int *t1, int *t2)
     30                static void xorBlockAES(int *t1, int *t2)
    3131                {
    3232                        t1[0] ^= t2[0];
     
    3636                }
    3737
     38                static void xorBlockDES(int *t1, int *t2)
     39                {
     40                        t1[0] ^= t2[0];
     41                        t1[1] ^= t2[1];
     42                }
     43
    3844        public:
    39                 static array<unsigned char>^ decryptAES(array<unsigned char>^ input, array<unsigned char>^ key, const int bits, const int length)
     45                static array<unsigned char>^ decryptAES(array<unsigned char>^ input, array<unsigned char>^ key, const int bits, const int length, const int mode)
    4046                {
    4147                        const int blockSize = 16;
     
    4652                        unsigned char* inp = (unsigned char*)malloc(numBlocks*blockSize);
    4753                        unsigned char* outp = (unsigned char*)malloc(numBlocks*blockSize);
    48                         unsigned char* ckey = (unsigned char*)malloc(bits/8);
     54                        unsigned char ckey[32];
    4955
    5056                        arrayToCArray(input, inp, numBlocks*blockSize);                 
    51                         arrayToCArray(key, ckey, bits/8);                       
     57                        arrayToCArray(key, ckey, bits/8);
    5258
    5359                        AES_KEY aeskey;
     
    5763                        {
    5864                                AES_decrypt((inp+c*blockSize), outp+c*blockSize, &aeskey);
    59                                 xorBlock((int*)(outp+c*blockSize), (int*)(inp+(c-1)*blockSize));
     65                                if (mode == 1)          //CBC
     66                                        xorBlockAES((int*)(outp+c*blockSize), (int*)(inp+(c-1)*blockSize));
    6067                        }
    6168
     
    6370                        carrayToArray(output, outp, length);
    6471                        free(inp);
    65                         free(outp);
    66                         free(ckey);
     72                        free(outp);                     
    6773                        return output;
    6874                }
    6975
    70                 static array<unsigned char>^ decryptDES(array<unsigned char>^ input, array<unsigned char>^ key, const int length)
     76                static array<unsigned char>^ decryptDES(array<unsigned char>^ input, array<unsigned char>^ key, const int length, const int mode)
    7177                {
    7278                        const int blockSize = 8;
     
    8793                        for (int c = 1; c < numBlocks; c++)
    8894                        {
    89                                 DES_ecb_encrypt((const_DES_cblock*)(inp+c*blockSize), (const_DES_cblock*)(outp+c*blockSize), &deskey, DES_DECRYPT);                                                     
     95                                DES_ecb_encrypt((const_DES_cblock*)(inp+c*blockSize), (const_DES_cblock*)(outp+c*blockSize), &deskey, DES_DECRYPT);
     96                                if (mode == 1)          //CBC
     97                                        xorBlockDES((int*)(outp+c*blockSize), (int*)(inp+(c-1)*blockSize));
    9098                        }
    9199
Note: See TracChangeset for help on using the changeset viewer.