hashdeep 与 sha1 和 sha1sum 产生不同的结果

hashdeep 与 sha1 和 sha1sum 产生不同的结果

我在 Ubuntu 16.04 上使用 hashdeep 计算了文件“/etc/mtab”的 sha1 哈希值。然后我使用 sha1sum 计算了同一文件的 sha1 哈希值。结果我得到了不同的哈希值!

在计算其他文件的哈希值时,这两个程序似乎都创建了相同的哈希值。最后,我将文件复制到另一台计算机并在那里运行这两个程序。在第二台计算机上,它们都计算出了与第一台计算机上 sha1sum 计算出的相同的哈希值。最后,我在第二台计算机上(而不是复制的计算机上)使用 hashdeep 和 sha1sum 检查了文件“/etc/mtab”,结果再次不同。

使用 hashdeep 和 sha256sum 时 sha256 也是如此。

我正在hashdeep -c sha256 /etc/mtab打电话sha256sum /etc/mtab

有人知道这是怎么发生的吗? 是否有 hashdeep 的缓存实现,因此会存储较旧的哈希值?

答案1

我刚刚在我的系统上运行了它,并且运行良好,这些是我的结果:

冉:hashdeep -c sha256 Xwrapper.config

%%%% HASHDEEP-1.0
%%%% size,sha256,filename
## Invoked from: /home/george/Documents/askubuntu
## $ hashdeep -c sha256 Xwrapper.config
## 
630,c53eb030a8f9a2f7c08dd04e3611c9470f840d90d1261ef3e6643b1d1aff8608,/home/george/Documents/askubuntu/Xwrapper.config

冉:sha256sum Xwrapper.config

c53eb030a8f9a2f7c08dd04e3611c9470f840d90d1261ef3e6643b1d1aff8608  Xwrapper.config

好的,让我尽可能解释一下,在检查了几件事之后,我看到了一些关于如何hashdeepsha256sum看到的东西symbolic links。当我这样做时,stat /etc/mtab我看到大小是19,但是当我运行(使用l,链接选项)时:

 hashdeep -o l /etc/mtab

它什么也不返回,但如果我这样做:

 hashdeep -o f /atc/mtab

它返回下面的哈希值,但请注意,其大小0stat /ec/mtab之前给出的大小不同:

 %%%% HASHDEEP-1.0
 %%%% size,md5,sha256,filename
 ## Invoked from: /etc
 ## $ hashdeep -o lf /etc/mtab
 ## 0,d41d8cd98f00b204e9800998ecf8427e,e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855,/etc/mtab

它将文件视为常规文件因为我使用了f选项,因此会sha256从一个空文件中报告或计算,而将sha256sum其视为symbolic link大小为的和19。因此,简单地说,当文件是常规文件时,它会给出类似的结果,但当文件是时则不会link

请注意,该文件是一个链接,proc/self/mounts其大小hashdeep仍为0,但被 视为stat大小19,因此hashdeep可以跟踪该链接,但似乎无法读取内容或查看该文件的内容。但是,它确实将 视为/etc/vtrgb非空文件,因此我猜/etc/mtab链接/proc/self/mounts很重要。

当我在另一个链接上运行它时,它变得更加有趣并证实了我对/etc/mtab链接的怀疑:/proc/self/mountshashdeep /etc/vtrgb

%%%% HASHDEEP-1.0
%%%% size,md5,sha256,filename
## Invoked from: /etc
## $ hashdeep /etc/vtrgb
## 158,1fb3c13c4fcfa8cc4131aba905df559e,684cd905549f78e025870dd5c8a3835e49f79f2bb08952eb7424537f6df5fa13,/etc/vtrgb

正如你所注意到的尺寸不是就像 和 的情况一样/etc/mtab,并且正在运行:

 sha256sum /etc/vtrgb

返回相同checksum

 684cd905549f78e025870dd5c8a3835e49f79f2bb08952eb7424537f6df5fa13  /etc/vtrgb

进一步调查显示hashdeep返回结果相同hash

0,d41d8cd98f00b204e9800998ecf8427e,e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

对于其中的所有文件和目录,/proc/实际上是,pseudo filesystem因此它们的信息存储在内存中而不是磁盘上。而对于这些相同的文件sha256sum,则不会返回不同的值checksum

相关内容