360上位机VC MFC利用外部库实现MD5加密
实现MD5加密
功能展示
重要的信息如密码等经常得进行保护,我们当前例程通过外部库实现对指定文本进行MD5加密处理再显示,效果如图,输入要保护的文本如密码等,点击<生成MDC校验码>例程会生成32位的大小写校验码;
要点提示
例程使用外部开源库实现字符串的MD5校验码计算,库的整个工程源代码文件可以官网下载,编辑后可获得静态文件及头文件,例程已打包在根目录文件夹encrypt内,开发工程时复制到自己工程根目录就可使用;
例程中计算字符串用到开源库的类MD5来实现。通过MD5类的一个函数CalculateDigest()就可以快速的计算出指定字符串的MD5校验码. virtual void CalculateDigest(byte *digest, const byte *input, size_t length)
digest 为函数计算得出的DM5校验码长度为16字节。input为要校验的字符串, MD5算法的输入的字符串长度可任意。 Length为输入字符串的长度,值必须是输入字符串长度,否则生成的MD5哈希值会一次一变;
编译时注意运行库的匹配及预编译器的设置,工程-设置-C\C++ - category(General) 去除了_AFXDLL预编译器,
工程-设置-C\C++ - category(Code Generation) Use Run-time library 设置为Multithreaded
实现功能
1.新建基于对话框的应用程序
2.复制工程根目录开源库的文件夹encrypt复制到自己工程根目录,并在主对话框头文件包含库头文件
#include "encrypt\\aes.h"
#include "encrypt\\md5.h"
#include "encrypt\\modes.h"
#include "encrypt\\filters.h"
using namespace CryptoPP;
#pragma comment( lib, "encrypt\\cryptlib.lib")
3.依照例程界面添加编辑框IDC_EDIT1, IDC_EDIT2, IDC_EDIT3作为文本的输入及大小写MD5码的显示,添加按钮<生成MD5校验码>关联按钮的点击函数
void CGkbc8Dlg::OnGenerate()
{
CString sText,sTemp;
GetDlgItemText(IDC_EDIT1,sText);
//<>
int nLen = sText.GetLength();//MD5算法的输入内容可以是任意长度的字符串
byte digest[16];//MD5生成的信息摘要固定长度位(字节)
MD5 md5;
//注意,此处len必须是message的字符长度,否则生成的哈希值会一次一变
md5.CalculateDigest(digest, (unsigned char *)sText.GetBuffer(0), nLen); //等价于下面两行代码之和
//md5.Update(message, len);
//md5.Final(digest);
//<>显示
sText.Empty();
for(int i=0; i<16; i++)
{
sTemp.Format("%02x",digest);
sText+=sTemp;
}
sText.MakeLower();
SetDlgItemText(IDC_EDIT2,sText);
sText.MakeUpper();
SetDlgItemText(IDC_EDIT3,sText);
}
我们来演示下功能实现的整个过程
如果您认可,可联系功能定制! 如果您着急,充值会员可直接联系发您资料!
|