📄 des.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 + -