MD5算法的C实现源代码

2010年5月23日 | 分类: C/C++ | 标签: , ,

这份源代码来源于RFC1321文档 – The MD5 Message-Digest Algorithm的附录,应该是最官方的源代码了吧,可用于C、C++,可用于内核驱动。

一份测试代码:

/* test.c - MD5算法测试 */

#include 
#include 
#include "md5.h"

/* 打印出16进制MD5 */
void MD5Print(unsigned char digest[16])
{
	unsigned int i;

	for (i = 0; i < 16; i++)
		printf("%02x", digest[i]);
}

/* 计算字符串的MD5 */
void MD5String(char *string)
{
	MD5_CONTEXT context;
	unsigned char digest[16];

	MD5Init(&context);
	MD5Update(&context, (unsigned char*)string, strlen(string));
	MD5Final(digest, &context);

	MD5Print(digest);
	printf("\n");
}

/* 计算文件的MD5 */
void MD5File(char *filename)
{
	FILE *file;
	MD5_CONTEXT context;
	int len;
	unsigned char buffer[1024], digest[16];

	if ((file = fopen(filename, "rb")) == NULL)
		printf("%s can't be opened\n", filename);
	else
	{
		MD5Init(&context);
		while (len = fread(buffer, 1, 1024, file))
			MD5Update(&context, buffer, len);
		MD5Final(digest, &context);

		fclose(file);

		MD5Print(digest);
		printf("\n");
	}
}

int main(int argc, char *argv[])
{
	MD5String("StarsunYzL");
	MD5File("C:\\Windows\\Notepad.exe");

	return 0;
}

Download:

http://www.brsbox.com/filebox/down/fc/849c3af9c6bd36f6f796e73201862991

目前还没有任何评论.