【问题标题】:The same content file, the MD5 value is different同一个内容文件,MD5值不同
【发布时间】:2017-08-21 13:12:53
【问题描述】:

众所周知,两个不同文件的md5(即使它们的内容相同)是不同的,就像这样:

[langshiquan@cp01-rdqa-dev002.cp01.baidu.com md5test]$ ll
total 16
drwxrwxr-x  7 langshiquan langshiquan 4096 Mar 28 19:41 output
drwxrwxr-x  3 langshiquan langshiquan 4096 Mar 28 19:44 test
-rw-rw-r--  1 langshiquan langshiquan  100 Mar 28 19:54 test.sh
-rw-rw-r--  1 langshiquan langshiquan   69 Mar 28 19:48 test.sh~
[langshiquan@cp01-rdqa-dev002.cp01.baidu.com md5test]$ sh test.sh
[langshiquan@cp01-rdqa-dev002.cp01.baidu.com md5test]$ md5sum output.tar
2b7f05590cd4c8665dd61bbf745bbeee  output.tar
[langshiquan@cp01-rdqa-dev002.cp01.baidu.com md5test]$ sh test.sh
[langshiquan@cp01-rdqa-dev002.cp01.baidu.com md5test]$ ll
total 18212
drwxrwxr-x  7 langshiquan langshiquan     4096 Mar 28 19:41 output
-rw-rw-r--  1 langshiquan langshiquan 18606080 Mar 28 19:54 output.tar
drwxrwxr-x  3 langshiquan langshiquan     4096 Mar 28 19:44 test
-rw-rw-r--  1 langshiquan langshiquan      100 Mar 28 19:54 test.sh
-rw-rw-r--  1 langshiquan langshiquan       69 Mar 28 19:48 test.sh~
[langshiquan@cp01-rdqa-dev002.cp01.baidu.com md5test]$ md5sum output.tar
3601eff99bc78198b152b04ca94c53d0  output.tar

test.sh 脚本外壳:

#! bin/bash
cp -rp output ./test/
echo "1" > ./test/output/a.txt
tar -cf output.tar ./test/* -C ./

我在网上搜索了很长时间。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。
Q1.所以我认为是否存在类似于 MD5 的哈希函数(例如,我将其称为“HashStr”)对于内容相同但属性不同的文件生成相同的“HashStr”。
Q2.或者当我们可以制作TAR时,如何排除文件的属性来制作相同的MD5?

提前致谢。

【问题讨论】:

  • 不清楚你在问什么,md5sum 关心文件的名称,具有相同内容的不同名称的文件返回相同的 md5 - 如果你观察到这种行为您正在比较的文件不同。
  • 我知道你在说什么,我只需要一个哈希,它可以使相同的内容文件具有相同的哈希。
  • md5sum 这样做,如果内容相同,哈希是否相同?
  • 哦,md5sum 做不到。

标签: hash cryptography md5 md5sum


【解决方案1】:

如果文件相同,则哈希值将相同。如果属性(而不是文件内容)不同,则需要在散列之前将属性添加到文件中。将要包含的属性放入一段文本并将其添加到文件中。然后hash属性+文件作为一条数据。

【讨论】:

  • 此外,请注意 tar 不是确定性的,因为至少某些版本的 tar 将在存档中包含 PID。因此,重复运行 tar 实际上会产生不同的文件。
  • 谢谢,因为“把你要包含的属性放到一段文本中添加到文件中”,我无法排除文件的属性。对吗?
猜你喜欢
  • 2013-04-03
  • 2016-07-27
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 2018-01-12
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多