一.安装OpenSSL库
把下面的东西一股脑儿的装上,以免编译时出现链接错误
apt-get install openssl libssl-dev libssl-doc libcurl4-openssl-dev
二.实现MD5加密函数,接受一个字符串,返回它的常规32位小写MD5值
/* md5_encrypt.h */ #ifndef _ENCRYPT_H_ #define _ENCRYPT_H_ char *md5_encrypt(const unsigned char*); #endif
/* md5_encrypt.c */ #include <stdio.h> #include <stdlib.h> #include <openssl/md5.h> #include <string.h> #include <strings.h> #include "md5_encrypt.h" char *md5_encrypt(const unsigned char *str) { unsigned char md[16]; char tmp[3] = {'\0'}; char *buf = (char*)malloc(33); bzero(buf,33); MD5(str,strlen(str),md); int i = 0; for(i=0;i<16;i++) { sprintf(tmp,"%2.2x",md[i]); strcat(buf,tmp); } return buf; }
编译此函数: gcc md5_encrypt.c -c -lcrypto
上面实现的MD5加密函数char *md5_encrypt(const unsigned char *str)接受一个const unsigned char字符串,返回它的32位常规小写字符md5值。
注意返回的md5值保存在堆区,占33个字节,使用后记得用free释放。
还有一种用库中MD5_Init等函数实现的方法。以后附上。顺便研究一下OpenSSL库,没准以后用的着。
OpenSSL是跨平台的,而且提供了命令行工具。