大家都知道,MD5是一种摘要运算算法,关于更多的摘要算法,可以参考我之前的一篇文章:摘要算法汇总
今天要给大家带来的是MD5摘要运算的源码实现,废话不多说,直接上源码:
先看头文件,什么了一些结构体定义和操作宏定义,以及导出的3个API接口:
#ifndef __MD5_H__
#define __MD5_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
#include <stdint.h>
typedef struct _md5_ctx_t {
uint32_t count[2];
uint32_t state[4];
uint8_t buffer[64];
} md5_ctx_t;
#define F(x,y,z) ((x & y) | (~x & z))
#define G(x,y,z) ((x & z) | (y & ~z))
#define H(x,y,z) (x^y^z)
#def