所以我目前正在使用 bcrypt 用随机生成的盐(如 pipbcrypt模块中所示)对密码进行哈希处理,共 12 轮。
我一直在环顾四周,但找不到详细而清晰的数学方法来估计强大的 GPU(甚至其他破解方法)破解我的 bcrypt 哈希需要多长时间。
我找到了描述 8x Nvidia GTX 1080 Hashcat 基准的这个要点,但我似乎无法使用为 bcrypt 提供的数据来应用我的哈希算法实现。
所以我目前正在使用 bcrypt 用随机生成的盐(如 pipbcrypt模块中所示)对密码进行哈希处理,共 12 轮。
我一直在环顾四周,但找不到详细而清晰的数学方法来估计强大的 GPU(甚至其他破解方法)破解我的 bcrypt 哈希需要多长时间。
我找到了描述 8x Nvidia GTX 1080 Hashcat 基准的这个要点,但我似乎无法使用为 bcrypt 提供的数据来应用我的哈希算法实现。
好的,所以从您链接的文章中,我们了解到 8x Nvidia 设置每秒可以计算大约 100 000 个 bcrypt 哈希 (H/s)。如果要相信评论,则用于基准的成本系数为 5 - 非常低。对于 bcrypt,轮数等于成本因子的 2 次方。因此,如果您的哈希是 12,那么您的哈希将慢 2 12 /2 5 = 2 7 = 128 倍。所以从 10 5 H/s 你下降到 10 3 H/s。
现在您需要知道的是,要破解具有 n 位熵的哈希,平均需要尝试 2 n-1次。因此,以一个由 8 个随机小写字母组成的密码为例。它的熵为 n = log 2 (26 8 ) = 38 位。要破解它,您需要 2 38-1 /1000 秒 = 4 年。
请注意,基准测试是从 2016 年开始的。随着时间的推移,硬件变得越来越快。您需要定期重新评估您的成本因素以保持最新状态。
这是对密码的常见误解。这取决于您对密码的定义。您必须首先定义密码的含义,例如“8 个字母数字字符”。一旦你定义了它,我们就可以计算了。
“字母数字”是 26 个大写字母、26 个小写字母和 10 个数字字符,或 62 种可能的组合。
要尝试 8 个字符密码的所有组合,即:62 * 62 * 62 * 62 * 62 * 62 * 62 * 62
那是 218,000,000,000,000。
除以 13094(每秒的哈希数),得到 16674820955 秒,即 528 年。
尝试所有组合的不切实际导致其他策略,例如选择字典单词或“马尔可夫链”来测试可能选择的密码类型,而不是尝试所有随机组合。您无法从数学上计算这有多快,因为它完全是主观的。这取决于运气、目标选择的密码以及您选择测试的密码。破解几个小时的密码通常有 10% 的机会破解密码,但同样,这是主观体验。根据您要破解的密码以及破解方式,您的体验会有所不同。
无论如何,关键是这个问题没有答案。这是对事物运作方式的误解。这就是为什么你不能用谷歌搜索答案。