centos下Linux C语言MD5的使用

在Linux C变成中用到MD5加密会使用到openssl库,下面给出的是一个简单的小Demo:

#include <stdio.h>
#include <openssl/md5.h>
#include <string.h>

#define     MD5_LENGTH           16
#define     MAX                  40

int  main(void) {
    MD5_CTX  ctx;
    unsigned char  data[MAX];
    unsigned char  md[MD5_LENGTH];
    char buf[MAX] = "";
    char tmp[3] = "";

    fprintf(stderr, "Input string:");
    fgets(data, MAX, stdin);
    data[strlen(data)-1] = '\0';

    MD5_Init(&ctx);
    MD5_Update(&ctx, data, strlen(data));
    MD5_Final(md, &ctx);

    int  i = 0;

    for (; i < MD5_LENGTH; ++i) {
        sprintf(tmp, "%02X", md[i]);
        strcat(buf, tmp);
    }

    fprintf(stderr, "%s\n", buf);

    return  0;
}

这里如果在进行编译时出现 Error: openssl/MD5.h No Such File or Directory说明目前没有安装openssl的开发包,那需要安装一下该安装包:

使用yum install openssl-devel 即可完成安装。

如果在编译时出现undefined reference to `MD5_Init'是因为在编译时需要链接openssl库的内容,在编译时加上-lssl就OK了。