Python - 循环在一段时间后停止运行

时间:2018-01-12 20:14:34

标签: python loops hash

所以我在这里生成随机十六进制值,对它们进行散列并与预先给定的散列进行比较。该程序测试大约4 000个哈希,然后停止运行而没有错误。

这是代码的循环部分:

def loop():

    randomhex = binascii.b2a_hex(os.urandom(4))
    hash_object = hashlib.sha1(randomhex)
    hashh = hash_object.hexdigest()
    print(hashh)

    if hashh == sha:
        done()
    else:
        loop()

1 个答案:

答案 0 :(得分:0)

你不能像这样的循环使用递归

这是您的呼叫树的一个小视图:

loop()
  loop()
    loop()
      loop()
        loop()
          loop()
             ...

依此类推,直到筹码耗尽......

  • 你不需要递归,你根本不使用以前的结果,你不需要回溯,你没有基础案例...
  • 虽然可以工作但如果你很幸运,大部分时间经过大量迭代/递归调用后,你达到最大递归限制并且程序崩溃,当一个简单的while循环足够时。

我个人更喜欢带有手动while True的{​​{1}}循环,这样可以节省在循环之前初始化变量的麻烦,如下所示:

break

作为旁注,同时使用bruteforce 随机打开哈希是非常有效的方法......即使重复的可能性非常小def loop(): while True: randomhex = binascii.b2a_hex(os.urandom(4)) hash_object = hashlib.sha1(randomhex) hashh = hash_object.hexdigest() print(hashh) if hashh == sha: # we found the result: exit the loop break 从1到2 ** 31的简单循环计算起来会更快。

相关问题