⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 des.h

📁 用C++方式编写的DES算法,是一个不错的源代码哟,适和对C++有一定认识的人
💻 H
字号:
#ifndef __DES_H 
#define __DES_H 

class DES 
{ 
public: 
// Encrypt/decrypt the data in "data", according to the "key". 
// Caller is responsible for confirming the buffer size of "data" 
// points to is 8*"blocks" bytes. 
// The data encrypted/decrypted is stored in data. 
// The return code is 1:success, other:failed. 
int encrypt ( unsigned char key[8], unsigned char* data, int blocks = 1 ); 
int decrypt ( unsigned char key[8], unsigned char* data, int blocks = 1 ); 

// Encrypt/decrypt any size data,according to a special method. 
// Before calling yencrypt, copy data to a new buffer with size 
// calculated by extend. 
int yencrypt ( unsigned char key[8], unsigned char* data, int size ); 
int ydecrypt ( unsigned char key[8], unsigned char* in, int blocks, int* size = 0 ); 

int extend ( int size ) { return (size/8+1)*8; }; 

private: 
void des(unsigned char* in, unsigned char* out, int blocks); 
void des_block(unsigned char* in, unsigned char* out); 

private: 
unsigned long KnL[32]; 
enum Mode { ENCRYPT, DECRYPT }; 
void deskey(unsigned char key[8], Mode md); 
void usekey(unsigned long *); 
void cookey(unsigned long *); 

private: 
void scrunch(unsigned char *, unsigned long *); 
void unscrun(unsigned long *, unsigned char *); 
void desfunc(unsigned long *, unsigned long *); 

private: 
static unsigned char Df_Key[24]; 
static unsigned short bytebit[8]; 
static unsigned long bigbyte[24]; 
static unsigned char pc1[56]; 
static unsigned char totrot[16]; 
static unsigned char pc2[48]; 
static unsigned long SP1[64]; 
static unsigned long SP2[64]; 
static unsigned long SP3[64]; 
static unsigned long SP4[64]; 
static unsigned long SP5[64]; 
static unsigned long SP6[64]; 
static unsigned long SP7[64]; 
static unsigned long SP8[64]; 

}; 

#endif 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -