des.h
上传用户:nbcables
上传日期:2007-01-11
资源大小:1243k
文件大小:2k
源码类别:

钩子与API截获

开发平台:

Visual C++

  1. #ifndef __DES_H 
  2. #define __DES_H  
  3. class DES { 
  4. public: 
  5.         // Encrypt/decrypt the data in "data", according to the "key". 
  6.         // Caller is responsible for confirming the buffer size of "data" 
  7.         // points to is 8*"blocks" bytes. 
  8.         // The data encrypted/decrypted is stored in data. 
  9.         // The return code is 1:success, other:failed. 
  10.         int encrypt ( unsigned char key[8], unsigned char* data, unsigned char *data_out, int blocks = 1 ); 
  11.         int decrypt ( unsigned char key[8], unsigned char* data, unsigned char *data_out, int blocks = 1 );  
  12.         // Encrypt/decrypt any size data,according to a special method. 
  13.         // Before calling yencrypt, copy data to a new buffer with size 
  14.         // calculated by extend. 
  15.         int yencrypt ( unsigned char key[8], unsigned char* data, int size ); 
  16.         int ydecrypt ( unsigned char key[8], unsigned char* in, int blocks, int* size = 0 );  
  17.         int extend ( int size ) { return (size/8+1)*8; };  
  18. private: 
  19.         void des(unsigned char* in, unsigned char* out, int blocks); 
  20.         void des_block(unsigned char* in, unsigned char* out);  
  21. private: 
  22.         unsigned long KnL[32];
  23.         enum Mode { ENCRYPT, DECRYPT }; 
  24.         void deskey(unsigned char key[8], Mode md); 
  25.         void usekey(unsigned long *); 
  26.         void cookey(unsigned long *);  
  27. private: 
  28.         void scrunch(unsigned char *, unsigned long *); 
  29.         void unscrun(unsigned long *, unsigned char *); 
  30.         void desfunc(unsigned long *, unsigned long *);  
  31. private: 
  32.         static unsigned char Df_Key[24]; 
  33.         static unsigned short bytebit[8]; 
  34.         static unsigned long bigbyte[24]; 
  35.         static unsigned char pc1[56]; 
  36.         static unsigned char totrot[16]; 
  37.         static unsigned char pc2[48]; 
  38.         static unsigned long SP1[64]; 
  39.         static unsigned long SP2[64]; 
  40.         static unsigned long SP3[64]; 
  41.         static unsigned long SP4[64]; 
  42.         static unsigned long SP5[64]; 
  43.         static unsigned long SP6[64]; 
  44.         static unsigned long SP7[64]; 
  45.         static unsigned long SP8[64];  
  46. }; 
  47. #endif