代码之家  ›  专栏  ›  技术社区  ›  TJCLK

使用此代码可以找到6字节sha-1冲突需要多长时间?

  •  0
  • TJCLK  · 技术社区  · 8 年前

    import hashlib
    import os
    import binascii
    
    start_string = os.urandom(20)
    x0 = binascii.hexlify(start_string)
    
    hash_value = hashlib.sha1(x0)
    x1 = hash_value.hexdigest()
    
    while x0[28:]!=x1[28:]:
      x0 = x1
      x1_hash = hashlib.sha1(x0)
      x1 = x1_hash.hexdigest()
    else:
      print x0
      print x1
    

    我使用的是Thinkpad T400笔记本电脑(Intel Core 2 Duo 2.8GHz,6MB二级缓存,800MHz)。多久能找到碰撞?无论如何要改进代码使其更快?(这条Python)

    1 回复  |  直到 8 年前
        1
  •  2
  •   jasonharper    8 年前

    6字节数据为2 (281474976710656)可能性。平均来说,你会在大约一半的检查中发现碰撞,大约140万亿次。在我的机器上(使用Python),每秒大约有200000个SHA1/hexdigest操作,因此我预计大约需要22年的运行时间。

    如果您没有明确要求碰撞发生在您生成的两个连续摘要之间,那么可以通过检查 全部的