破解哈希需要多长时间?

How long does it take to crack a hash?

我想计算破解 SHA-256 哈希所需的时间。所以我研究并发现了以下计算。如果我有一个长度为 6 chars 的小写字母密码,我会有 26^6 密码对吗?

我想,为了计算我必须将这个数字除以哈希率的时间。因此,如果我有一个 RTX 3090,哈希率将是 120 MH/s (1.2*10^8 H/s) 并且我需要计算 26^6/(1.2*10^8) 以获得以秒为单位的时间对吗?

这个想法是对还是错?

是的,但是一个小写拉丁文 6 字符的字符串也足够短,您可能希望计算一次并将其放入数据库中,以便您可以在 O(1) 中查找它。它仅略超过 300M 个条目。也就是说,鉴于您有 50% 的可能性在搜索的前半部分找到答案,破解它的速度如此之快,除非您经常这样做,否则您甚至可能不会费心。 You don't even need a particularly fancy GPU for something on this scale.

请注意,在很多情况下,一个 6 个字符的字符串也可以是一个 5 个字符的字符串,因此您需要添加 26^6 + 26^5 + 26^4 + ...,但所有这些加在一起只会引发这大约有 320M 哈希值。这是一个很小的space。

加上大写字母、数字和易于输入的符号,您可以达到 96^6 ~ 780B。另一方面,再添加 3 个小写字母(总共 9 个)就可以达到 26^9 ~ 5.4T。对于随机字符串的暴力破解,越长越复杂。

对于您的具体问题,请注意,您如何实现这一点很重要。如果您不以最大化 GPU 的方式编写代码,您将不会获得这些类型的哈希率。例如,编写简单的代码,一次将一个值发送到 GPU 进行散列,然后比较 CPU 上的结果可能会非常慢(在某些情况下比只在 [= 上完成所有工作还要慢) 20=]).有效地设置你的内存和最大化 GPU 可以并行做的事情是非常重要的。如果您不熟悉这种编程,我建议您使用或研究 John the Ripper.

这样的工具