当您知道密码的形式时,是否可以编写可以破解sha256
哈希的代码?例如,密码表单为*-**********
,长度为12-13个字符,并且:
a...z
,A...Z
和0...9
在猜测每次传递后,代码将传递转换为sha256
并查看结果散列是否与我们的散列相等,然后打印正确的传递。
我知道所有可能的数字都是一个很大的数字(26+26+10)^10
,但我想知道:
答案 0 :(得分:4)
无论您了解有关明文的信息有多少,都无法“破解”SHA256哈希(假设您通过破解从散列中获取明文)。即使您知道密码,也无法确定任何反转哈希的过程。在技术方面,没有已知的方法在SHA256哈希上执行preimage attack。
这意味着您必须诉诸猜测或暴力强制密码:
您有一个前缀,可以是[1-25]-
中的任意值和[a-zA-Z0-9]
中的10个附加字符。这意味着可能的密码总数为:25 * 62^10
或20,982,484,146,708,505,600
。
如果您能够每秒计算和检查十亿个密码,则需要20,982,484,146
秒来生成每个可能的哈希值。如果你从现在开始,你将在大约665年内完成。
如果你能够利用更多的计算能力并每秒产生一万亿个哈希值,那么它只需要半年多一点的时间。好消息是计算哈希可以并行完成,因此很容易使用多台机器。坏消息是,这种计算能力并不便宜。
回答你的问题:
10^15
哈希值。幸运的是,由于比特币使用sha256,因此很容易找到生成所需哈希数所需的计算能力的粗略数字。
如果this article中的数字正确,则Raspberry Pi每秒可生成2*10^5
个哈希值。我相信较新的Raspberry Pis比那更强大,所以我要把它加倍到4*10^5
。您需要在不到一天的时间内生成每秒约10^15
个哈希值。
你需要250,000,000
Raspberry Pis。