Linux C++ MD5


#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

相关内容