[Ubuntu]基于openssl的MD5加密C语言实现

来源:互联网 发布:编程解决鸡兔同笼问题 编辑:程序博客网 时间:2024/09/21 09:02

Ubuntu下提示“error: openssl/md5.h: No such file or directory”的解决方案为

 安装libssl-dev: sudo apt-get install libssl-dev

 

在linux c使用openssl/md5.h加密
#include<stdio.h>
#include<openssl/md5.h>
#include<string.h>

int main( int argc, char **argv )
{
unsigned char *data = "123";
unsigned char md[16];
int i;
char tmp[3]={'\0'},buf[33]={'\0'};
MD5(data,strlen(data),md);
for (i = 0; i < 16; i++){
    sprintf(tmp,"%02x",md[i]);
    strcat(buf,tmp);
}
printf("%s\n",buf);
return 0;
}

输出:
202cb962ac59075b964b07152d234b70

1. %02X或%02x强制输出两位(分别对应大写字符串和小写字符串)。
2.一定要使用unsigned char,虽然是char,其实就是个int,当然,它只有一个字节,和char的区别是,unsigned char 0~255 ,char -127~127。使用char会出问题。这个md5加密函数,返回16个十进制数,范围在0~255间,把它format为十六进制就是32为md5编码了。
3.gcc编译的时候,后面加上参数 -lcrypto 如果系统没有安装libcrypto,是不能用这个方法的。

4. 可以使用strtol来转换16位进制的字符串为long型整数 具体请man strtol 有示例代码


转自人人网 http://blog.renren.com/share/223584957/10339202050

0 0
原创粉丝点击