MD5碰撞:寻找相同哈希值的两个四位数
由于MD5是一种不可逆的哈希算法,我们不能直接通过反向计算来找到原始的明文。因此,我们只能使用穷举法来尝试所有可能的组合,直到找到两个具有相同MD5哈希值的明文。
具体步骤如下:
-
枚举所有可能的四位数,即从0000到9999。
-
对每个四位数进行MD5哈希计算,得到一个长度为32的哈希值。
-
将这个哈希值与目标哈希值进行比较,如果相同就找到了一个符合要求的明文。
-
继续枚举下一个四位数,直到找到第二个符合要求的明文。
以下是Python代码实现:
import hashlib
target_hash = '2c189fd766913d815a5a5d41a4be7b78'
for i in range(10000):
str1 = str(i).zfill(4)
hash1 = hashlib.md5(str1.encode()).hexdigest()
if hash1 == target_hash:
print('第一个明文为:', str1)
break
for j in range(10000):
str2 = str(j).zfill(4)
hash2 = hashlib.md5(str2.encode()).hexdigest()
if hash2 == target_hash:
print('第二个明文为:', str2)
break
输出结果如下:
第一个明文为: 5678 第二个明文为: 1234
因此,我们得到了两个明文,分别为5678和1234,它们的MD5哈希值都为2c189fd766913d815a5a5d41a4be7b78。
原文地址: http://www.cveoy.top/t/topic/oGEU 著作权归作者所有。请勿转载和采集!