C++ VC MD5加密(信息摘要算法)示例

来源:互联网 发布:雯雅婷桌面宠物改数据 编辑:程序博客网 时间:2024/06/05 06:05

md5c.cmd5.h


上面两个文件,是网上开源的两个文件,应用最多的,在里面加了个字符串的摘要算法

void MDString (char *str,char digest[33]){ MD5_CTX context;char tmpdigest[16];int i = 0; unsigned int len = strlen (str);MD5Init (&context);MD5Update (&context, (unsigned char*)str, len); MD5Final (tmpdigest, &context);/*make a string version of the numeric digest value*/for (i= 0 ; i <16 ; i++ ){sprintf(&(digest[2*i]),"%02x",(unsigned char)tmpdigest[i]);}digest[32]='\0';}

digest是最终结果的输出,要保证有32B的空间,因为md5的输出是32为字符。

最后注意,MD5Final的结果tmpdigest,需要转换才能正常显示。

写了实例程序,VC6下,因为开源的文件时用标准C写的,所以可以应用到任意语言任意语言,大家可以下载,0积分,但希望大家踊跃反馈

另,在VC6中,默认使用MBCS编码,即多字节字符。

CString 转 char ,我用的是

CString m_mingwen;

char *p = (LPSTR)(LPCTSTR)m_mingwen;

如果,在VS下,默认unicode编码,你可以使用下面的转换

char * w2m(const CString str,char * buffer,int nMaxLen){ZeroMemory(buffer,nMaxLen);CString tmpstr = str;WideCharToMultiByte(CP_ACP,WC_COMPOSITECHECK|WC_DEFAULTCHAR,tmpstr.GetBuffer(str.GetLength()),str.GetLength(),buffer,//转换到缓冲区中nMaxLen,//最多128个字节0,0); return buffer;}CString m2w(const char *str){CString wcs = _T("");wchar_t wbuf[512] = {0};MultiByteToWideChar(CP_ACP,0,str,strlen(str),wbuf,sizeof(wbuf));wcs = wbuf;return wcs;}



下载地址:http://download.csdn.net/detail/jsjrj01/7323569

md5在线查询:http://www.cmd5.com/

0 0