如何从哈希中找到文件?

Sha*_*ani 1 md5sum hash sha256

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

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

Rak*_*iha 5

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

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

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

使用 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 "$@"
Run Code Online (Sandbox Code Playgroud)

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

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

正如@MelcomX用命令指出的find那样,您可以在一行中完成它,但是可能需要很长时间。这个解决方案的好处是,您可以传递部分哈希值,并且它仍然可以工作,因为它正在grep运行。

find / -exec sha512sum {} + | grep YOURHASHHERE
Run Code Online (Sandbox Code Playgroud)

如果这不是您想要的,请按照@Eliah Kagan在评论中建议的方式详细说明您的问题,以便我们能够理解您正在寻找的内容,或者考虑接受答案。