如何根据哈希值找到一个文件?

如何根据哈希值找到一个文件?

在 Linux 中,如何根据给定的 Hash 值找到文件?

请注意,我不想找到文件的哈希值,我需要的是它的反面。

答案1

根据我对这个问题的假设和理解,您可能可以通过几种方式来做到这一点。

一种方法是,如果你确切知道要查找哈希匹配的目录,那么你可以直接传递哈希,然后检查该目录中的文件。所以基本上你要做的是:

myHash="$1"
[[ $(sha256sum fileName | awk {'print $1'}) == "$myHash" ]] && echo "File found"

使用 for 循环简化此过程:

checkHash(){
myHash="$1" ## The hash of the file that you want to find
if (( $# == 1 )); then ## Must pass at least one argument
  ## Checking each file in the pwd
  for X in *; do
    if [[ -f $X ]]; then
        local hash=$( sha256sum $X | awk '{print $1}' )
        [[ "$myHash" == "$hash" ]] && { 
          echo "Hash matches for $X";
        }
    fi
  done
fi
}
checkHash "$@"

但是,这不会扫描任何以点开头的文件的哈希值。

另一种方法是使用xargsfind命令。

作为@MelcomX 指出使用find命令,您可以在一行中完成此操作,但可能需要很长时间。此解决方案的好处是您可以传递部分哈希,并且由于它是greping,因此它仍可工作。

find / -exec sha512sum {} + | grep YOURHASHHERE

如果这不是您要找的内容,请详细说明您的问题@Eliah Kagan在评论中提出建议,以便我们了解您正在寻找的内容,或考虑接受答案。

相关内容