📄 _md5.h
字号:
/*
记得当初自己刚开始学习md5的时候,从网上搜了很多关于算法的原理和文字性的描述的东西,但是看了很久一直没有搞懂,
搜c的源代码又很少。直到后来学习rsa算法的时候,从网上下了1991年的欧洲的什么组织写的关于rsa、des、md5算法的c源代码
(各部分代码混在一块的,比如rsa用到的随机大素数就是用机器的随机时间的md5哈希值获得的)。我才彻底把md5弄明白了。
这里的代码就是我从那里面分离出来的,代码的效率和可重用性都是很高的。整理了一下希望对需要的朋友能够有帮助。
md5的介绍的文章网上很多,关于md5的来历,用途什么的这里就不再介绍了。这里主要介绍代码。代码明白了就什么都明白了。
*/
////////////////////////////////////////////////////////////////////
/* md5.h */
#ifndef _MD5_H_
#define _MD5_H_
#include <stdio.h>
#include <string.h>
#define R_memset(x, y, z) memset(x, y, z)
#define R_memcpy(x, y, z) memcpy(x, y, z)
#define R_memcmp(x, y, z) memcmp(x, y, z)
typedef unsigned long UINT4;
typedef unsigned char *POINTER;
/* MD5 context. */
typedef struct {
/* state (ABCD) */
/*四个32bits数,用于存放最终计算得到的消息摘要。当消息长度〉512bits时,也用于存放每个512bits的中间结果*/
UINT4 state[4];
/* number of bits, modulo 2^64 (lsb first) */
/*存储原始信息的bits数长度,不包括填充的bits,最长为 2^64 bits,因为2^64是一个64位数的最大值*/
UINT4 count[2];
/* input buffer */
/*存放输入的信息的缓冲区,512bits*/
unsigned char buffer[64];
} MD5_CTX;
void MD5Init(MD5_CTX *);
void MD5Update(MD5_CTX *, unsigned char *, unsigned int);
void MD5Final(unsigned char [16], MD5_CTX *);
#endif /* _MD5_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -