方法一:
-
#include<stdio.h>
-
#include<openssl/md5.h>
-
#include<string.h>
-
-
int main( int argc, char **argv )
-
{
-
MD5_CTX ctx;
-
unsigned char *data="123";
-
unsigned char md[16];
-
char buf[33]={'\0'};
-
char tmp[3]={'\0'};
-
int i;
-
-
MD5_Init(&ctx);
-
MD5_Update(&ctx,data,strlen(data));
-
MD5_Final(md,&ctx);
-
-
for( i=0; i<16; i++ ){
-
sprintf(tmp,"%02X",md[i]);
-
strcat(buf,tmp);
-
}
-
printf("%s\n",buf);
-
return 0;
-
}
输出:
202CB962AC59075B964B07152D234B70
方法二:
-
#include<stdio.h>
-
#include<openssl/md5.h>
-
#include<string.h>
-
-
int main( int argc, char **argv )
-
{
-
unsigned char *data = "123";
-
unsigned char md[16];
-
char buf[33]={'\0'};
-
char tmp[3]={'\0'};
-
int i;
-
-
MD5(data,strlen(data),md);
-
-
for (i = 0; i < 16; i++){
-
sprintf(tmp,"%2.2x",md[i]);
-
strcat(buf,tmp);
-
}
-
printf("%s\n",buf);
-
return 0;
-
}
输出:
202cb962ac59075b964b07152d234b70
注
1.一定要使用unsigned char,使用char会出问题。这个md5加密函数,返回16个十进制数,范围在0~255间,把它format为十六进制就是32为md5编码了。
2.gcc编译的时候,后面加上参数 -lcrypto 如果系统没有安装libcrypto,是不能用这个方法的。
阅读(4500) | 评论(0) | 转发(1) |