一、MD5算法程序包下载链接
https://download.csdn.net/download/gghhjjddss/87405510
二、小数据量MD5码生成
2-1、输入要校验的数据
const char mini_code[] = {
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
};
2-2、对输入的数据进行校验实现过程
unsigned char o_md5[16];
int offset = 0;
int length;
int total = sizeof(big_code);
hash_md5_ctx_t md5;
/* 数据量小的情况 */
hash_md5_init(&md5);
hash_md5_update(&md5,(unsigned char *)mini_code,sizeof(mini_code));
hash_md5_final(o_md5,&md5);
printf("mini code:\r\n");
for(int i = 0; i < 16; i ++) {
printf("%02X ",o_md5[i]);
}
printf("\r\n");
2-3、输出结果
三、大数据量MD5码生成
3-1、输入要校验的数据
const char big_code[] = {
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
};
3-2、对输入的数据进行校验
/* 数据量大的情况 */
hash_md5_init(&md5);
while(total)
{
if(total > sizeof(buffer)) {
length = sizeof(buffer);
} else {
length = total;
}
memcpy(buffer,big_code,length);
hash_md5_update(&md5,buffer,length);
total -= length;
}
hash_md5_final(o_md5,&md5);
printf("big code:\r\n");
for(int i = 0; i < 16; i ++) {
printf("%02X ",o_md5[i]);
}
printf("\r\n"); return 0;
3-3、输出结果
四、完整的实现例程
/*******************************************************************************
* FilePath : \source\main.c
* Company :
* Author :
* Version : V1.0.0
* Date : 2023-01-31 08:29:43
* Description :
*******************************************************************************/
#include <stdio.h>
#include <string.h>
#include "hash_md5.h"
const char mini_code[] = {
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
};
const char big_code[] = {
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
0x00,0x80,0x80,0x80,0x80,0x80,0x98,0xB0,0xE0,0xC0,0x80,0x00,
0x00,0x01,0x01,0x01,0x01,0x01,0x19,0x0D,0x07,0x03,0x01,0x00,/*"→",0*/
0x00,0x80,0xC0,0xE0,0xB0,0x98,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x01,0x03,0x07,0x0D,0x19,0x01,0x01,0x01,0x01,0x01,0x00,/*"←",0*/
};
static unsigned char buffer[128];
/*******************************************************************************
* Function Name : main
* Date : 2023-01-31 08:31:40
* Description :
* Input :
* Output :
* Return :
*******************************************************************************/
int main(int argv,const char **argc)
{
unsigned char o_md5[16];
int offset = 0;
int length;
int total = sizeof(big_code);
hash_md5_ctx_t md5;
/* 数据量小的情况 */
hash_md5_init(&md5);
hash_md5_update(&md5,(unsigned char *)mini_code,sizeof(mini_code));
hash_md5_final(o_md5,&md5);
printf("mini code:\r\n");
for(int i = 0; i < 16; i ++) {
printf("%02X ",o_md5[i]);
}
printf("\r\n");
/* 数据量大的情况 */
hash_md5_init(&md5);
while(total)
{
if(total > sizeof(buffer)) {
length = sizeof(buffer);
} else {
length = total;
}
memcpy(buffer,big_code,length);
hash_md5_update(&md5,buffer,length);
total -= length;
}
hash_md5_final(o_md5,&md5);
printf("big code:\r\n");
for(int i = 0; i < 16; i ++) {
printf("%02X ",o_md5[i]);
}
printf("\r\n"); return 0;
}
五、例程下载链接
https://download.csdn.net/download/gghhjjddss/87405531