⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 md5driver.cpp

📁 md5 加密的C/C++完美实现。 估计是现在最好的md5加密实现了
💻 CPP
字号:
/*
 * md5driver.cpp
 * 
 * test driver for MD5
 */
#include <iostream.h>
#include <stdio.h>
#include <string.h>

#include "md5.h"

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

void MDString(const char* str, BYTE digest[16])
{
	MD5_CTX context;
	UINT4 len = strlen(str);
	
	MD5Init(&context);
	MD5Update(&context, (BYTE*)str, len);
	MD5Final(digest, &context);
}

void MDString(const char* str) 
{
	MD5_CTX context;
	BYTE digest[16];
	UINT4 len = strlen(str);

	MD5Init(&context);
	MD5Update(&context, (BYTE*)str, len);
	MD5Final(digest, &context);

	printf("MD5(\"%s\")=", str);
	MDPrint(digest);
	printf("\n");
}

void MDFile(FILE* file, BYTE digest[16])
{
	MD5_CTX context;
	int len;
	const int SIZE = 1024;
	BYTE buffer[SIZE];
	
	MD5Init(&context);
	while ( len = fread(buffer, 1, SIZE, file)) {
		MD5Update(&context, buffer, len);
	}
	MD5Final(digest, &context);
	
	fclose(file);
}

void MDFile(const char* filename)
{
	FILE* file;
	MD5_CTX context;
	int len;
	const int SIZE = 1024;
	BYTE buffer[SIZE];
	BYTE digest[16];

	if ((file = fopen(filename, "rb")) == NULL) {
		printf("%s can't be opened.\n", filename);
		return;
	} 

	MD5Init(&context);
	while ( len = fread(buffer, 1, SIZE, file)) {
		MD5Update(&context, buffer, len);
	}
	MD5Final(digest, &context);
	
	fclose(file);

	printf("MD5(\"%s\")=", filename);
	MDPrint(digest);
	printf("\n");
}

void TestSuite() 
{
	MDString("");
	MDString("a");
	MDString("abc");
	MDString("message digest");
	MDString("abcdefghijklmnopqrstuvwxyz");
	MDString("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
	MDString("12345678901234567890123456789012345678901234567890123456789012345678901234567890");
}

void TestFile()
{
	MDFile("test.txt");
}

void TestMD5()
{
	TestSuite();
	TestFile();
}

void main() 
{
	TestMD5();
	int END;
	cin >> END;
}

/*
MD5 ("") = d41d8cd98f00b204e9800998ecf8427e
MD5 ("a") = 0cc175b9c0f1b6a831c399e269772661
MD5 ("abc") = 900150983cd24fb0d6963f7d28e17f72
MD5 ("message digest") = f96b697d7cb7938d525a2f31aaf161d0
MD5 ("abcdefghijklmnopqrstuvwxyz") = c3fcd3d76192e4007dfb496cca67e13b
MD5 ("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789") 
	= d174ab98d277d9f5a5611c2c9f419d9f
MD5 ("12345678901234567890123456789012345678901234567890123456789012345678901234567890") 
	= 57edf4a22be3c955ac49da2e2107b67a
*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -