-2

我一直在寻找需要 md5 计算的 bacula 云支持问题,并且一直在尝试使用https://github.com/firebladed/bacula/blob/Branch-11.0/bacula/src/lib/md5.c并且我得到了来自亚马逊 s3 的错误 md5 错误

所以我尝试将代码直接编译成 md5sum 可执行文件,请参阅(Makefile

我得到了与 ubuntu md5sum 不同的 md5

md5sum (GNU coreutils) 8.28
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Ulrich Drepper, Scott Miller and David Madore.

错误 md5 的示例文件

2521308b3fe3836623f78708a5c988d6 - ubuntu md5sum

e972192662d26a25af5fb895cf79b175 - 编译的 md5sum

正在使用简单的命令行进行测试

./md5sum <file>

用于编译的 md5sum

md5sum <file>

用于系统 md5sum

使用链接的示例

理想情况下,如果它的一些简单的 id 喜欢修复它

4

1 回答 1

1

您的输入文件包含0x00字节,而程序使用while(fgets(buf, ...)) } { MD5Update(..., strlen(buf)) }. strlen报告的大小小于“行”长度(您的输入文件似乎是二进制文件),因此生成的 md5sum 是一组不同的字节。

将您的输入数据转换为文本 ( cat -v part.1),然后传递给两个程序,或者用一些东西来修复程序for (int c; (c = fgetc(file)) != EOF; ) MD5Update(&ctx. &c, 1)

于 2021-10-13T23:40:04.877 回答