三位大写字母的SHA-256逆向破解脚本无结果,求助排查
问题分析与修复
你的代码无法得到结果的核心问题是重复使用同一个hash对象并调用update()方法——每次update都会把新数据追加到已有的哈希计算中,导致每次生成的哈希值是之前所有组合的拼接字符串的哈希,而不是当前单个三位字母组合的哈希。
修复后的代码
import hashlib import itertools letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' target_hash = 'A5EB8E2E5CAF611498411678B5E7A641BA175E443D725F6827849DCB22160FE4' for combination in itertools.product(letters, repeat=3): data = ''.join(combination) # 为每个组合独立计算SHA-256哈希 hex_hash = hashlib.sha256(data.encode('utf-8')).hexdigest() if hex_hash == target_hash: print("找到原始三位大写字母:") print(data) break # 找到结果后立即终止循环,提升效率
关键修改点
- 移除循环外的
hash_object,改为在每次循环中直接计算当前字符串的SHA-256哈希,确保每次都是独立计算单个组合的哈希值。 - 添加
break语句,找到结果后立即退出循环,避免不必要的计算开销。 - 将目标哈希值单独赋值给变量,提升代码可读性。
内容的提问来源于stack exchange,提问作者misterjasoom
相关产品推荐
相关产品推荐

