#include
#include
#include
#include
#include
#include
using namespace std;
/**
* @模拟 php 的 md5函数,返回md5
* len 要返回从左到右几个字符
*/
void phpMd5(const string& src,char* md,int len=32)
{
unsigned char md5_buf[16];
MD5((const unsigned char*)src.c_str(), src.size(), md5_buf);
//定义一字符窜指针,指向要写入的地址
char *p = md;
for(int i=0;i<16; i++)
{
sprintf(p,"%02x",md5_buf[i]);
p+=2;
}
//复位指针
p = md;
if(len <1 || len > 32)
len = 32;
*(p+len) = '\0';
}
int main()
{
string my_str = "helloa";
/*
uint gid = 124;
char tmp_str[32];
sprintf(tmp_str,"%d",gid);
my_str.assign(tmp_str);
*/
char md5_result[32];
phpMd5(my_str,md5_result);
printf("%s",md5_result);
printf("\n");
return 0;
}
编译
g++ md5.cpp -o md5 -lssl