📄 mdencrypt.h
字号:
// MDEncrypt.h: interface for the CMDEncrypt class.
// 功能描述: 完成MD5算法的摘要过程
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_MDENCRYPT_H__E12DF788_EB2C_423D_B618_4ADA3CC506FD__INCLUDED_)
#define AFX_MDENCRYPT_H__E12DF788_EB2C_423D_B618_4ADA3CC506FD__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define BUFFER_A 0
#define BUFFER_B 4
#define BUFFER_C 8
#define BUFFER_D 12
class CMDEncrypt
{
public:
CMDEncrypt(BYTE argData[], int argSize);
CMDEncrypt();
virtual ~CMDEncrypt();
void GetInput(BYTE argData[], int argSize);
LPBYTE GetResult(); //获得加密后的结果数据的指针
int InitMDBuffer(); //初始化MD5缓冲器
int HandleData(); //处理报文分组
int Padding(); //完成报文填充
private:
//扩充至k*512 + 448位
void Expand(LPBYTE argData, int argNewSize);
//扩充64位的长度位(8个BYTE)
void ExpandLenSpace(LPBYTE argData);
//自已实现的F, G, H, I 四个逻辑函数
void FunctionF(LPBYTE argSrc1, LPBYTE argSrc2, LPBYTE argSrc3, LPBYTE argDst);
void FunctionG(LPBYTE argSrc1, LPBYTE argSrc2, LPBYTE argSrc3, LPBYTE argDst);
void FunctionH(LPBYTE argSrc1, LPBYTE argSrc2, LPBYTE argSrc3, LPBYTE argDst);
void FunctionI(LPBYTE argSrc1, LPBYTE argSrc2, LPBYTE argSrc3, LPBYTE argDst);
//自定义的算术操作
//二进制加操作
void Add(LPBYTE argSrc1, LPBYTE argSrc2, LPBYTE argDst, int argSize);
//循环左移操作
void ROL(LPBYTE argSrc, int argTimes, int argSize);
//自定义实现的逻辑操作
void And(LPBYTE argSrc1, LPBYTE argSrc2, LPBYTE argDst, int argSize);
void Not(LPBYTE argSrc1, LPBYTE argDst, int argSize);
void XOR(LPBYTE argSrc1, LPBYTE argSrc2, LPBYTE argDst, int argSize);
void Or(LPBYTE argSrc1, LPBYTE argSrc2, LPBYTE argDst, int argSize);
public:
LPBYTE m_pData; //存放原始输入的数据流
BYTE m_pBuffer[16]; //存放MD5的Buffer
int m_nSize; //存放数据的最新长度
int m_nOrigSize; //存放数据的原始长度
const int m_nModCnt;
};
#endif // !defined(AFX_MDENCRYPT_H__E12DF788_EB2C_423D_B618_4ADA3CC506FD__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -