1 Star 0 Fork 3

Lingtao Zeng/opensource_damo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
nettle.c 1.09 KB
一键复制 编辑 原始数据 按行查看 历史
huangduirong 提交于 2023-05-10 11:44 . personal damo
#include <stdbool.h>
#include <string.h>
#include <stdio.h>
#include <sys/time.h>
#include "nettle/md5.h"
#define SHOW_LOG false
#define MAX_BLOCK_SZ 1024*1024*1 // 每次hash分段的最大长度
// nettle包中的MD5接口使用
int nettle_md5_damo(unsigned int times, uint8_t *data)
{
struct md5_ctx ctx;
char hex_digest[MD5_DIGEST_SIZE * 2 + 1];
uint8_t digest[MD5_DIGEST_SIZE];
const uint8_t *data_pt;
size_t length = strlen(data);
size_t total_len = 0;
if (SHOW_LOG)
printf("===========This is test for nettle MD5: %s\n", data);
md5_init(&ctx);
do
{
data_pt = data + total_len;
// 分段输入,每段大小为MAX_BLOCK_SZ
if (total_len + MAX_BLOCK_SZ <= length)
{
md5_update(&ctx, MAX_BLOCK_SZ, data_pt);
total_len += MAX_BLOCK_SZ;
}
else
{
md5_update(&ctx, length-total_len, data_pt);
total_len = length;
}
} while (total_len < length);
md5_digest(&ctx, MD5_DIGEST_SIZE, digest);
if (times <= 5)
{
for (int i = 0; i < MD5_DIGEST_SIZE; i++)
{
sprintf(hex_digest + i * 2, "%02x", digest[i]);
}
printf("MD5: %s\n", hex_digest);
}
return 0;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C
1
https://gitee.com/lingtao2023/opensource_damo.git
git@gitee.com:lingtao2023/opensource_damo.git
lingtao2023
opensource_damo
opensource_damo
master

搜索帮助