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

📄 des.h

📁 本代码是自己封装的MD5加密类
💻 H
字号:
#pragma once
using namespace std;
#include "afx.h"
class MD5des
{
public:
	MD5des(void);

public:
	~MD5des(void);
public:

/**************************************************************
*函数说明: 文件进行一次DES加密
*参数说明:intPath    需要加密的文件绝对路径
*          outPath    加密后文件的绝对路径
*            key      用于加密的密钥
*返回值:   true 加密文件成功  false加密文件失败
**************************************************************/
     bool FileEncrypt(CString inPath,CString outPath,CString key);

/**************************************************************
*函数说明: 文件进行一次DES解密
*参数说明:intPath    需要解密的文件绝对路径
*          outPath    解密后文件的绝对路径
*            key      用于加密的密钥
*返回值:   true 解密文件成功  false解密文件失败
**************************************************************/
bool FileDecrypt(CString intPath,CString outPath,CString key);


/**************************************************************
*函数说明: 读取每个字符进行一次DES加密
*参数说明:str    需要加密字符
*         (&m_key)[8]  用于加密的八位密钥
*返回值:   true 加密成功  false加密失败
**************************************************************/
	bool DesEncrypt(char str,int (&m_key)[8]);

/**************************************************************
*函数说明: 读取每个字符进行一次DES解密
*参数说明:str    需要解密字符
*         (&m_key)[8]  用于解密的八位密钥
*返回值:   true 解密成功  false解密失败
**************************************************************/
	bool DesDecrypt(char str,int (&m_key)[8]);

/**************************************************************
*函数说明: 对传入字符串进行一次DES加密
*参数说明:instr    传入需要加密的字符串
*          outstr   传出加密后的字符串
           key       用于加密的密钥
*返回值:   true 解密成功  false解密失败
**************************************************************/
	bool Stringencrypy(CString &instr,CString &outstr,CString key);

/**************************************************************
*函数说明: 对传入字符串进行一次DES解密
*参数说明:instr    传入需要解密的字符串
*          outstr   传出解密后的字符串
           key       用于解密的密钥
*返回值:   true 解密成功  false解密失败
**************************************************************/
	bool Stringdecrypy(CString &instr,CString &outstr,CString key);

/**************************************************************
*函数说明: 对密钥进行初始化,利用MD5进行加密
*参数说明:key    需要初始化的密钥

*返回值:   true 初始化密钥成功  false初始化密钥失败
**************************************************************/
   bool  InitializeKey(CString key);
	
   int outint1;
	char outint;
    int m_key1[8];//保存初始化后的八位密钥1
	int m_key2[8];//保存初始化后的八位密钥2
	//char *strout;//存取加密后的字符的中间变量
private:

    /* MD5 context. */
    typedef struct {
        UINT  state[4]; // 四个32bits数,用于存放最终计算得到的消息摘要。当消息长度〉512bits时,也用于存放每个512bits的中间结果*/ 
         UINT  count[2]; //存储原始信息的bits数长度,不包括填充的bits,最长为 2^64 bits,因为2^64是一个64位数的最大值*/
        UCHAR buffer[64]; // 存放输入的信息的缓冲区,512bits
    } MD5_CTX;
    MD5_CTX *context; 

	/**************************************************************
*函数说明: 初始化MD5结构
*参数说明:无

*返回值:  对state数组进行初始化
**************************************************************/
    void Init(void);

/**************************************************************
*函数说明: 将与加密的信息传递给md5结构,可以多次调用
*参数说明:input  需要加密的信息 inputlen指定的长度

*返回值: 无
**************************************************************/
    void Update(unsigned char *input, unsigned int inputLen);

/**************************************************************
*函数说明: 获取加密 的最终结果

*参数说明:存放16位的数组,digest:保存最终的加密串

*返回值: 返回一个16位的数组
**************************************************************/

    void Final(unsigned char digest[16]);
/**************************************************************
*函数说明: 利用MD5加密字符串

*参数说明:input加密的字符串,digest:保存最终的加密串

*返回值: 返回一个16位的加密结果数组
**************************************************************/
	bool  GetMd5String(unsigned char* digest, CString input);

/**************************************************************
*函数说明: 利用MD5加密字符串

*参数说明:strInput加密的字符串,strMD5:保存最终的加密串

*返回值: 返回一个十六进制的32位串
**************************************************************/
    VOID GetMd5String(OUT CString &strMD5,IN CString strInput);

/**************************************************************
*函数说明: 利用MD5加密字符数组

*参数说明:input加密的字符数组,strMD5:保存最终的加密串,inputlen指定的长度

*返回值: 返回一个十六进制的32位串
**************************************************************/
    VOID Enctypt(CString &strMD5, char *input, int inputlen);

private:
/**************************************************************
*函数说明:将4字节的整数copy到字符形式的缓冲区中
*参数说明:output:用于输出的字符缓冲区
           input:欲转换的四字节的整数形式的数组
           len:output缓冲区的长度,要求是4的整数倍
*返回值: 返回转换后的字符
**************************************************************/
	VOID Encode(unsigned char *output,unsigned int *input,unsigned int len);

/**************************************************************
*函数说明:这一个把字符形式的缓冲区中的数据copy到4字节的整数中(即以整数形式保存)
*参数说明:output:保存转换出的整数
           input:欲转换的字符缓冲区
           len:输入的字符缓冲区的长度,要求是4的整数倍
*返回值: 返回转换后的整数
**************************************************************/
	VOID Decode(unsigned int *output,unsigned char *input,unsigned int len);

/**************************************************************
*函数说明:对512bits信息(即block缓冲区)进行一次处理,每次处理包括四轮
*参数说明:state[4]:md5结构中的state[4],用于保存对512bits信息加密的中间结果或者最终结果
           block[64]:欲加密的512bits信息
*返回值: 返回加密的中间结果
**************************************************************/

	VOID MD5Transform(unsigned int state[4],unsigned char block[64]);

};

⌨️ 快捷键说明

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