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

faster bruteforce implementation for des

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NativeCryptography/NativeCryptography.h

    r1175 r1191  
    11#pragma once
    22#include "aes_core.h"
     3#include "DES/des.h"
    34#include <stdlib.h>
    45
     
    6667                        return output;
    6768                }
     69
     70                static array<unsigned char>^ decryptDES(array<unsigned char>^ input, array<unsigned char>^ key, const int length)
     71                {
     72                        const int blockSize = 8;
     73                        int numBlocks = length / blockSize;
     74                        if (length % blockSize != 0)
     75                                numBlocks++;
     76
     77                        unsigned char* inp = (unsigned char*)malloc(numBlocks*blockSize);
     78                        unsigned char* outp = (unsigned char*)malloc(numBlocks*blockSize);
     79                        unsigned char ckey[8];
     80
     81                        arrayToCArray(input, inp, numBlocks*blockSize);                 
     82                        arrayToCArray(key, ckey, 8);                   
     83
     84                        DES_key_schedule deskey;
     85                        DES_set_key_unchecked(&ckey, &deskey);
     86                        DES_ecb_encrypt((const_DES_cblock*)inp, (const_DES_cblock*)outp, &deskey, DES_DECRYPT);
     87                        for (int c = 1; c < numBlocks; c++)
     88                        {
     89                                DES_ecb_encrypt((const_DES_cblock*)(inp+c*blockSize), (const_DES_cblock*)(outp+c*blockSize), &deskey, DES_DECRYPT);                                                     
     90                        }
     91
     92                        array<unsigned char>^ output = gcnew array<unsigned char>(length);
     93                        carrayToArray(output, outp, length);
     94                        free(inp);
     95                        free(outp);                     
     96                        return output;
     97                }
    6898        };
    6999}
Note: See TracChangeset for help on using the changeset viewer.