Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1438573
  • 博文数量: 704
  • 博客积分: 10140
  • 博客等级: 上将
  • 技术积分: 6230
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-15 20:41
文章分类

全部博文(704)

文章存档

2013年(1)

2012年(16)

2011年(536)

2010年(151)

分类: C/C++

2011-06-02 15:54:06

#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


阅读(601) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~