当你知道传球形式时破解sha256

时间:2015-03-28 18:42:33

标签: sha256

当您知道密码的形式时,是否可以编写可以破解sha256哈希的代码?例如,密码表单为*-**********,长度为12-13个字符,并且:

  1. 第一个字符是1到25之间的一个数字
  2. 第二个是连字符
  3. 在从第三个到结尾的每个字符中,您可以放置​​a...zA...Z0...9
  4. 在猜测每次传递后,代码将传递转换为sha256并查看结果散列是否与我们的散列相等,然后打印正确的传递。

    我知道所有可能的数字都是一个很大的数字(26+26+10)^10,但我想知道:

    1. 是否可以编写此类代码?
    2. 如果是,是否可以在不到一天的时间内运行整个代码(因为我认为完成整个代码需要花费很多时间)?
    3. 由于我不能要求你为我编写代码,我可以在何处以及在何处索要此代码?

1 个答案:

答案 0 :(得分:4)

无论您了解有关明文的信息有多少,都无法“破解”SHA256哈希(假设您通过破解从散列中获取明文)。即使您知道密码,也无法确定任何反转哈希的过程。在技​​术方面,没有已知的方法在SHA256哈希上执行preimage attack

这意味着您必须诉诸猜测或暴力强制密码:

您有一个前缀,可以是[1-25]-中的任意值和[a-zA-Z0-9]中的10个附加字符。这意味着可能的密码总数为:25 * 62^1020,982,484,146,708,505,600

如果您能够每秒计算和检查十亿个密码,则需要20,982,484,146秒来生成每个可能的哈希值。如果你从现在开始,你将在大约665年内完成。

如果你能够利用更多的计算能力并每秒产生一万亿个哈希值,那么它只需要半年多一点的时间。好消息是计算哈希可以并行完成,因此很容易使用多台机器。坏消息是,这种计算能力并不便宜。

回答你的问题:

  1. 是否可以编写这样的代码?可以编写一个程序来迭代整个可能的密码范围,并根据要确定明文的哈希值进行检查为。
  2. 如果是,是否可以在不到一天的时间内运行整个代码。是的,如果你可以计算并检查每秒10^15哈希值。
  3. 我如何以及在哪里可以索要此代码?这是您遇到的最少问题。
  4. 幸运的是,由于比特币使用sha256,因此很容易找到生成所需哈希数所需的计算能力的粗略数字。

    如果this article中的数字正确,则Raspberry Pi每秒可生成2*10^5个哈希值。我相信较新的Raspberry Pis比那更强大,所以我要把它加倍到4*10^5。您需要在不到一天的时间内生成每秒约10^15个哈希值。

    你需要250,000,000 Raspberry Pis。