是否可以将 SHA1 散列反转为二进制?

is it possible reverse SHA1 hash to binary?

给定字节大小和 SHA1 哈希值(20 字节), 可以生成二进制数据以适应给定的 SHA1 哈希吗? 例如,给定一个 16KB 大小的散列和 A,将创建一个散列值为 A 的无意义的二进制文件。 可能吗?如果可以,我可以往哪个方向写代码?

是的,欢迎来到比特币矿工联盟。经典的方法是生成随机文档,直到其中一个文档满足您的条件。如果您的条件是整个散列应该等于您想要的,您将不得不生成大约 2^160 个文档(很多)。暴力破解解决方案对您来说可能不可行。

改为检查 this link,答案是 link 一篇讨论如何破解 SHA1 的论文。

为什么粗略2^160个文件?因为如果你确实是通过暴力破解你的解决方案,你没有办法事先知道一个文档是否对应于你的散列,所以你只需要生成一个随机文档,对其进行 SHA1,查看散列,如果它不等于您的目标哈希值,请重试。有 2^160 个 SHA1 哈希值,因此您需要生成 2^160 个文档来搜索整个 space。您当然可以走运;然后,平均而言,您只需要生成 2^159 个文档(如果您找到特定的顺序)。