有些時候,我們需要使用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