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

Python 使用此代码,我可以找到6字节sha-1冲突多长时间?,python,collision,sha1,Python,Collision,Sha1,我需要找到“SHA-1摘要的最后6字节”的冲突。这是我的Python代码(删除了不相关的部分): 我使用的是Thinkpad T400笔记本电脑(Intel Core 2 Duo 2.8GHz,6MB二级缓存,800MHz)。多久能找到碰撞?无论如何,要改进代码使其更快吗?(此Python)6字节的数据是248(281474976710656)个字节。你会期望在平均一半的检查中发现碰撞,所以大约140万亿次。在我的机器上(使用Python),每秒大约有200000个SHA1/hexdigest操

我需要找到“SHA-1摘要的最后6字节”的冲突。这是我的Python代码(删除了不相关的部分):

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

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

如果您不特别要求冲突发生在您生成的两个连续摘要之间,则可以通过检查所有先前生成的摘要(将它们保留在集合或目录中),大大加快该过程。(查阅“生日悖论”了解这有多大帮助。)这会很快耗尽内存,但除非你的笔记本电脑安装了绝对最小的RAM,否则你很可能会在发生碰撞之前发现碰撞。假设1-2GB的可用RAM,我估计运行时间为一到两分钟。

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

如果您不特别要求冲突发生在您生成的两个连续摘要之间,则可以通过检查所有先前生成的摘要(将它们保留在集合或目录中),大大加快该过程。(查阅“生日悖论”了解这有多大帮助。)这会很快耗尽内存,但除非你的笔记本电脑安装了绝对最小的RAM,否则你很可能会在发生碰撞之前发现碰撞。假设1-2GB的可用RAM,我估计运行时间为一两分钟

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