📄 _des.h
字号:
//---------------------------------------------------------------------------
#ifndef _DESH
#define _DESH
#define EN0 0 /* MODE == encrypt */
#define DE1 1 /* MODE == decrypt */
//---------------------------------------------------------------------------
class DES
{
private:
unsigned long KnL[32]; //用于存储加工过的密钥寄存器
unsigned long KnR[32];
unsigned long Kn3[32];
static unsigned char Df_Key[24]; //加或解密用的包
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];
static unsigned char pc1[56];
static unsigned char pc2[48];
static unsigned char totrot[16];
static unsigned short bytebit[8];
static unsigned long bigbyte[24];
void CooKey(register unsigned long * raw1); //按位分解密码
void UseKey(register unsigned long * from); //将处理过密钥存入寄存器
static void Scrunch(register unsigned char * outof, register unsigned long * into);
static void Unscrun(register unsigned long * outof, register unsigned char * into);
static void DESfunc(register unsigned long * block, register unsigned long * keys);
void Cpkey(register unsigned long * into); //在经过加密处理密钥前拷贝密钥
void Cp2Key(register unsigned long * into);
void Use2Key(register unsigned long * from);
void Cp3key(register unsigned long * into);
void Use3Key(register unsigned long * from);
protected:
public:
void DESKey(unsigned char *key, short edf); //处理8位密钥
void Des(unsigned char * inblock, unsigned char * outblock); //用8位密钥处理8位信息
void DES2Key(unsigned char * hexkey, short mode); //处理16位密钥
void DDes(unsigned char * from, unsigned char * into); //用16位密钥处理8位信息
void D2Des(unsigned char * from, unsigned char * into); //用16位密钥处理16位信息
void MakeKey(register char * aptr, register unsigned char * kptr); //根据密码生成8位密钥
void Make2Key(register char * aptr, register unsigned char * kptr); //根据密码生成16位密钥
void DES3Key(unsigned char * hexkey, short mode); //处理24位密钥
void D3_1Des(unsigned char * from, unsigned char * into); //根据24位密钥处理8位信息,与DDes完全一样
void D3_2Des(unsigned char * from, unsigned char * into); //根据24位密钥处理16位信息,与D2Des完全一样
void D3_3Des(unsigned char * from, unsigned char * into); //根据24位密钥处理24位信息
void Make3Key(register char * aptr, register unsigned char * kptr); //根据密码生成24位密钥
};
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -