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

📄 md5.cpp

📁 经本人优化后的计算 MD5 的类 CMD5 类及动态库源程序,单线程在 Core 6320 CPU,DDR2 667内存 时,忽略读取硬盘速度,每秒可计算150MB以上的数据,可直接做为计算MD5的工
💻 CPP
字号:
// MD5.cpp : 定义 DLL 应用程序的入口点。
//

#include "stdafx.h"
#include "md5.h"
#include "CMD5.h"

//--------------------------------------------------------------------------------
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    return TRUE;
}

//--------------------------------------------------------------------------------
//
// 以下为此动态库的 4 个导出函数
//
//--------------------------------------------------------------------------------

// MD5 计算初始化函数,返回CMD5类指针,供后续调用使用.
// 每次调用这个函数时,都会创建一个 CMD5 类,所以可以同时生成多个 MD5 计算的线程.

MD5_API void* MD5Init ( void )
{
	CMD5* md5=new CMD5();
	return md5;
}

//--------------------------------------------------------------------------------
// 当数据量大时,循环调用此函数传递后续数据,直到将所有数据计算完
// 如果数据量小,可一次提交计算,无需循环
// md5 :        调用MD5Init 时得到的 CMD5 指针.
// input :      输入数据缓冲区指针.
// inputLen :   缓冲区数据长度,以字节为单位

MD5_API void MD5Update ( void* md5,unsigned char *input,DWORD inputLen  )
{
	((CMD5*)md5)->Update(input,inputLen);
}

//--------------------------------------------------------------------------------
// 取计算结果,同时销毁 相应的 CMD5 类
// md5 :        调用MD5Init 时得到的 CMD5 指针.
// digest :     16字节的缓冲区指针,用于接收末转换成字符串的16进制MD5值
// md5str :     至少33字节的缓冲区指针,用于接收 MD5 值字符串

// digest 与 md5str 可选择提交,如果为空,则跳过复制,亦可同时提交来
// 得到16进制 MD5 值和字符串 MD5 值

MD5_API void MD5Final ( void* md5,char* digest,char* md5str )
{
	((CMD5*)md5)->Final();
	if( digest )
		memcpy( digest,((CMD5*)md5)->digest,16 );
	if( md5str )
		strcpy( md5str,((CMD5*)md5)->md5str );
	delete ((CMD5*)md5);
}
//--------------------------------------------------------------------------------
// 此函数用于计算单一字符串或缓冲区序列,其中允许有0值字节
// 调用此函数之前无须调用以上3个函数,为一次性计算使用.
// input :      缓冲区首址
// len :        缓冲区长度,以字节为单位
// digest :     16字节的缓冲区指针,用于接收末转换成字符串的16进制MD5值
// md5str :     至少33字节的缓冲区指针,用于接收 MD5 值字符串

// digest 与 md5str 可选择提交,如果为空,则跳过复制,亦可同时提交来
// 得到16进制 MD5 值和字符串 MD5 值
MD5_API void MD5String( unsigned char *input,DWORD len,char* digest,char* md5str )
{
	CMD5 md5;
	md5.Update(input,len);
	md5.Final();
	if( digest )
		memcpy( digest,md5.digest,16 );
	if( md5str )
		strcpy( md5str,md5.md5str );
}
//--------------------------------------------------------------------------------

⌨️ 快捷键说明

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