gpt4 book ai didi

c - 相同文件内容的不同 md5sum?

转载 作者:太空狗 更新时间:2023-10-29 12:21:08 24 4
gpt4 key购买 nike

我在计算 md5sum 时遇到问题。我有一个恢复工具 - 它存档文件的元数据(inode),还计算它们文件的 md5sum 并在安装期间将它们存储在 sqlite db 中。当文件被移除/删除时。该工具使用 sqlite-db 中的元数据恢复已删除的文件。它恢复文件。现在,我想确保恢复的文件与原始文件完全相同。因此重新计算恢复的文件 md5sum,如下所示。问题是,奇怪的是,对于少数文件,我可以看到(使用 cat)文件内容完全相同(与删除之前一样)& stat 命令显示相同的输出(除了不同的 inode 编号)但 md5sum 不同。

以下 2 个文件具有相同的内容 - 因此具有不同的 inode 号不会影响 md5sum。

764efa883dda1e11db47671c4a3bbd9e  /test/hi1.txt
764efa883dda1e11db47671c4a3bbd9e /test/hi.txt

任何想法,我应该如何处理这个?

char file_location[512] = {0};

char md5_cmd[512], md5sum[34];
FILE *pf;
//some recovery stuff goes here...

//Recompute md5 of recovered file
memset(md5_cmd, '\0', 512);
sprintf(md5_cmd, "md5sum %s", file_location);

pf = popen(md5_cmd, "r");
if (!pf) {
fprintf(stderr,"Could not open pipe");
return;
}

// get data
fgets(md5sum, 34, pf);

if (pclose(pf) != 0)
fprintf(stderr, "Error: close Failed.");

fprintf(stdout, "Md5sum is %s", md5sum);

最佳答案

您无法可靠地将文件内容与 cat 进行比较。这样(除非您使用 cat -A 或类似方法),可能会有许多未被注意到的差异:空格与制表符、行尾的空格等。

你应该比较文件

diff -u fileA fileB

cmp fileA fileB

.

关于c - 相同文件内容的不同 md5sum?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8091658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com