source: trunk/NativeCryptography/NativeCryptography.h @ 1208

Last change on this file since 1208 was 1208, checked in by Sven Rech, 12 years ago

little bit faster entropy implementation

File size: 1.8 KB
Line 
1#pragma once
2#include "aes_core.h"
3#include "DES/des.h"
4
5using namespace System::Threading;
6using namespace System;
7
8namespace NativeCryptography {
9
10        public ref class Crypto
11        {
12        private:
13                enum class cryptMethod {methodAES, methodDES};
14
15                static array<unsigned char>^ zeroIV8 = gcnew array<unsigned char>(8);
16                static array<unsigned char>^ zeroIV16 = gcnew array<unsigned char>(16);
17
18                static void xorBlockAES(int *t1, int *t2);
19                static void xorBlockDES(int *t1, int *t2);
20                static void encrypt(unsigned char* in, unsigned char* out, const cryptMethod method, AES_KEY* aeskey, DES_key_schedule* deskey);
21                static void decrypt(unsigned char* in, unsigned char* out, const cryptMethod method, AES_KEY* aeskey, DES_key_schedule* deskey);
22                static void xorblock(unsigned char* t1, unsigned char* t2, const cryptMethod method);
23                static array<unsigned char>^ decryptAESorDES(array<unsigned char>^ Input, array<unsigned char>^ Key, array<unsigned char>^ IV, const int bits, const int length, const int mode, const int blockSize, const cryptMethod method);
24
25                static Mutex^ prepareMutex = gcnew Mutex();
26               
27
28        public:
29                static double calculateEntropy(array<unsigned char>^ text, int bytesToUse);
30
31                static array<unsigned char>^ decryptAES(array<unsigned char>^ Input, array<unsigned char>^ Key, array<unsigned char>^ IV, const int bits, const int length, const int mode)
32                {
33                        const int blockSize = 16;
34                        return decryptAESorDES(Input, Key, IV, bits, length, mode, blockSize, cryptMethod::methodAES);
35                }
36
37                static array<unsigned char>^ decryptDES(array<unsigned char>^ Input, array<unsigned char>^ Key, array<unsigned char>^ IV, const int length, const int mode)
38                {
39                        const int blockSize = 8;
40                        return decryptAESorDES(Input, Key, IV, 0, length, mode, blockSize, cryptMethod::methodDES);
41                }
42        };
43}
Note: See TracBrowser for help on using the repository browser.