使用Python寻找哈希前缀为ee的v值(代码调试求助)
代码问题排查与修正
核心错误点
- 初始依赖未定义:程序启动时
values_list为空,第一次循环时vprev没有被赋值,直接计算会触发NameError。你需要明确第一个候选v对应的vprev取值(比如默认初始值设为0,或者先手动添加第一个基准值到列表)。 - 循环逻辑冗余且错误:
while循环内的for循环完全没必要——你需要的是递增候选v,而不是遍历已找到的列表元素覆盖v的值。 - 哈希判断对象错误:代码里判断的是
v² + vprev³的字符串前两位为"ee",但实际需求是判断该字符串的SHA256哈希值前两位为"ee",应该用results_hashed[:2] == "ee"而非results[0:2] == "ee"。
修正后的代码
假设第一个候选v对应的vprev为0(如果你的需求里vprev有其他初始值,可自行修改):
import hashlib values_list = [] # 初始化第一个vprev,根据需求调整 vprev = 0 solved = False v = 1 # 从1开始遍历候选值 while not solved: target_str = str(v**2 + vprev**3) hashed_result = hashlib.sha256(target_str.encode()).hexdigest() if hashed_result[:2] == "ee": solved = True values_list.append(v) else: v += 1 print(values_list)
如果需要连续查找多个符合条件的值(比如下一个v的vprev是上一个找到的v),可使用以下逻辑:
import hashlib values_list = [] # 初始vprev,第一个值的前置参考值 vprev = 0 # 设定需要找到的符合条件值的数量 target_count = 1 while len(values_list) < target_count: v = 1 while True: target_str = str(v**2 + vprev**3) hashed_result = hashlib.sha256(target_str.encode()).hexdigest() if hashed_result[:2] == "ee": values_list.append(v) vprev = v # 更新前置参考值为当前找到的v break v += 1 print(values_list)
内容的提问来源于stack exchange,提问作者KLM
相关产品推荐
相关产品推荐

