有些时候,我们需要使用C++进行字符串的md5加密,这就需要使用openssl中的md5库了,在我的另外一篇博客中讲解了如何创建OpenSSL动态库,这里就不在讲解了,不知道怎么生成的去看那篇博客。
使用vs2015新建一个C++控制台程序,项目的属性配置如下
包含目录引入OpenSSL的头文件
库目录引入OpenSSL的lib文件目录
链接器-输入-附加依赖项里添加lib文件的名称
libcrypto.lib
libssl.lib
接下来把动态库dll文件移动到项目程序的运行目录里,也就是exe程序所在目录
下面为自己写的md5加密函数
#include<iostream>
#include<string>
#include<openssl\md5.h>
using namespace std;
string MD5(const string& src)
{
MD5_CTX ctx;
string md5_string;
unsigned char md[16] = { 0 };
char tmp[33] = { 0 };
MD5_Init(&ctx);
MD5_Update(&ctx, src.c_str(), src.size());
MD5_Final(md, &ctx);
for (int i = 0; i < 16; ++i)
{
memset(tmp, 0x00, sizeof(tmp));
//%02X生成的16进制中字母为大写的
//%2.2x生成的16进制中字母为小写的
sprintf(tmp, "%2.2x", md[i]);
md5_string += tmp;
}
return md5_string;
}
int main()
{
string s1 = "keras";
s1 = MD5(s1);
cout << s1 << endl;
getchar();
return 0;
}
生成结果如下:
063009bb15c8272bd0c701cfdf011622