当您知道密码的形式时,是否可以编写可以破解
sha256
哈希的代码?例如,密码形式为 *-**********
,长度为 12-13 个字符,并且:
a...z
、A...Z
和 0...9
猜测每个通道后,代码将通道转换为
sha256
并查看结果哈希是否等于我们的哈希,然后打印正确的通道。
我知道所有可能的数字都是一个很大的数字
(26+26+10)^10
但我想知道:
无论您了解多少有关明文的信息,您都无法“破解”SHA256 哈希(假设破解是指从哈希中导出明文)。即使您知道密码,您也无法确定任何反转哈希的过程。用技术术语来说,没有已知的方法可以对 SHA256 哈希执行原像攻击。
这意味着您必须猜测或暴力破解密码:
您有一个前缀,可以是
[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,因此很容易找到生成所需哈希数所需的计算能力的粗略数字。
如果本文中的数字正确,Raspberry Pi 每秒可以生成
2*10^5
哈希值。我相信较新的 Raspberry Pi 比这更强大,所以我将其加倍到 4*10^5
。您需要每秒生成大约 10^15
哈希值,才能在不到一天的时间内完成。
你需要
250,000,000
树莓派。
可以租用亚马逊ec2机器来做这项工作吗,至少它们是高速的?