ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

【网络安全 | MD5截断比较】PHP、Python脚本利用

2026/9/26 19:41:26 拓冰建站 浏览量
【网络安全 | MD5截断比较】PHP、Python脚本利用

前言

在解题中,当遇到类似

substr(md5(a),-6,6) == 7788

这样的MD5截断比较的题目时,只有求出a的值才能进行接下来的操作。

一个一个去猜是不可能的,通常使用脚本解决,文末给出实战案例。

PHP循环脚本

<?phpfor($i=1;$i<999999;$i++)if(preg_match("/^8b184b/",substr(md5($i),-6,6))){echo $i;}
?>

结果如下

在这里插入图片描述

Python多线程脚本

import concurrent.futures
import hashlib#要进行比较的字符串
CompareString = '9331c'def md5(text):return hashlib.md5(str(text).encode('utf-8')).hexdigest()def findCode(code):   start, end = map(int, code.split(':'))for c in range(start, end):if md5(c)[0:5] == CompareString:  //0~5表示c经过加密后的前五个字符print(c)breakranges = [f"{10000000*i}:{10000000*(i+1)}" for i in range(3)]
with concurrent.futures.ThreadPoolExecutor() as executor:executor.map(findCode, ranges)

结果如下:

在这里插入图片描述
在这里插入图片描述

实战案例

easyphp 江苏工匠杯 | MD5截断比较实战