#include <stdio.h> #include <string.h> #include <iostream> #include <assert.h> #include <sys/types.h> #include <openssl/md5.h> 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