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

📄 _des.h

📁 几个封装完好的常用算法,md5,des,base64,crc32
💻 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 + -