当前位置: 首页 > 图文教程 > 开发语言 > VC++ > 在WTL中使用MD5加密法

VC++
在类VC的界面实现中加入目录树
软件换肤技术在 BCB 中的实现
利用非模窗口生成MDI介面
报表输出轻松搞定
Windows 中不规则窗体的编程实现
解说Win32的窗口子类化
使用测试优先方法开发用户界面
一个简单的登录对话框的实现
一个简单的日记本程序
从资源中加载皮肤
一个在RichEdit中添加表情图象的类
ActiveSkin 4.3 软件换肤在VC中的实现
一种另类“关于(About)”对话框的动态显示方法
对话框打印预览及打印
关于如何换肤、子类化的解决方案
制作 MSN、QQ 的消息提示窗口
如何对 BCGControlBarPro 进行换肤
定制个性化的对话框窗口类
改变窗口中的光标形状
更新MFC中的视图,跟踪.NET Framework中的事件

VC++ 中的 在WTL中使用MD5加密法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 69 ::
收藏到网摘: n/a

在WTL中使用MD5加密法


作者:广西北流中学160班 聂华闻

下载源代码

  不记得在哪个地方得到了一个MD5加密法的类,由于开发的原因要在WTL中使用MD5加密法,但是,这个类并不能直接的用在WTL中(In MFC it was an easy job ),所以我就修改了一下,并写出此文,以方便大家以后在WTL中使用MD5加密法。不过,小弟水平有限,有错漏地方,望各位哥姐包涵。

程序的运行界面如下:

First of all :在你的VC编译器中配置WTL(Copy 一段先 :-))

首先安装WTL AppWizard,现在最高版本应该是WTL7.0,直接运行setup脚本文件就可以了,这里给大家几个下载地址:
1) http://www.vckbase.com/tools/listtools.asp?tclsid=111
2) http://www.microsoft.com/downloads/details.aspx?familyid=128e26ee-2112-4cf7-b28e-7727d9a1f288&displaylang=en
3)http://www.copathway.com/vchelp/zsrc/wtlm.asp?type_id=70&class_id=1&cata_id=3&article_id=374

这样当你启动VC6.0后,File/New时,在Project属性页就能看到添加了一项ATL/WTL AppWizard。你可以直接把WTL的库文件( 共16个.h文件)拷贝到vc的安装目录VC98/Include中,也可以放到你的工程文件夹中。

And : 修改合适WTL的MD5加密算法类

  这个类有3个文件,MD5Checksum.h,MD5ChecksumDefines.h,MD5Checksum.cpp。不知道这个类库原来是不是专用在MFC中的,不过我在MFC中可以很直接的使用它,but,在WTL中,就不能直接使用了。我们必须动手小改一下它。首先,如果我们要把其用在WTL中的话,我们就应该在,MD5Checksum.h文件中加入#include<atlmisc.h>,这个文件,好让它支持WTL的CString 。再次,要把类库里的ASSERT(非用不可就改为ATLASSERT吧)、AfxIsValidAddress、等WTL不支持的语句take out,你可以放心,这些都是调试用的语句(maybe,去掉了也无所谓,后来证明也是如此).然后,这个类库里有两个函数,要使用到CFile的(如果你必须使用到FILE的话,那么建议用standard c++自己封装一个CFile ),也必须去掉。它们是 static CString GetMD5(CFile& File)、 static CString GetMD5(const CString& strFilePath);

And : 你就可以使用MD5加密法了

我是这样的:

处理EDIT的EN_CHANGE事件:
COMMAND_HANDLER(IDC_EDIT1, EN_CHANGE, OnChangeEdit1)
LRESULT OnChangeEdit1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled){ CString str_ReourceText; //get resource text HWND hWndResourceText = GetDlgItem(IDC_EDIT1); int int_ReourceText=::GetWindowTextLength(hWndResourceText); int_ReourceText++; LPTSTR lpStr = str_ReourceText.GetBufferSetLength(int_ReourceText); ::GetWindowText(hWndResourceText, lpStr, int_ReourceText); str_ReourceText.ReleaseBuffer(); str_ReourceText =CMD5Checksum::GetMD5((BYTE*)(const char*)str_ReourceText.GetBuffer(0),str_ReourceText.GetLength()); //set the result text SetDlgItemText(IDC_STATIC_RESUAL,str_ReourceText); return 0;}

嗯,该说的差不多都说了,不懂、不了解、不明白的,就看源代码吧!谢谢观看~~