MD5即Message-Digest Algorithm 5(信息摘要算法5),是计算机广泛使用的散列算法之一(又译摘要算法、哈希算法)。经MD2、MD3和MD4发展而来,诞生于20世纪90年代初。用于确保信息传输完整一致。虽然已被破解,但仍然具有较好的安全性,加之可以免费使用,所以仍广泛运用于数字签名、文件图片完整性验证以及口令加密等领域。
在linux环境下,要使用MD5加密算法。可以使用MD5_Init()/MD5_Update()/MD5_Final()这几个函数。原型:
#include <openssl/md5.h>
int
MD5_Init(MD5_CTX *c);
int
MD5_Update(MD5_CTX *c,
const
void
*data, unsigned
long
len);
int
MD5_Final(unsigned
char
*md, MD5_CTX *c);
MD5_Update() 函数用是进行 MD5 加密,其中第 1 个参数是第一个参数中初始化的 MD5_CTX 结构的指针,第 2 个参数 data 就是要加密的内容,第 3 个参数 len 是第 2 个参数的长度。
MD5_Final() 函数将加密后的内容放在第 1 个参数 md 中。
有如下测试代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md5.h>
#define LEN 64
int
main(
int
argc,
char
**argv[])
{
MD5_CTX md5_ctx;
unsigned
char
md[64];
unsigned
char
*data =
"MD5"
;
unsigned
char
mdstr[LEN + 1];
// 初始化
MD5_Init(&md5_ctx);
//MD5加密
MD5_Update(&md5_ctx, (unsigned
char
*)data,
strlen
(data));
//MD5加密后的内容放入md数组
MD5_Final(md, &md5_ctx);
printf
(
"%s\n"
, md
);
return
0;
}