MD5哈希迭代截断编码挑战实现错误排查求助
代码问题排查与修正
问题点分析
- 初始步骤未执行截断:你在循环前先计算了输入的完整MD5哈希,但没有按照要求先截断最后16个字符,直接把完整32位哈希传入循环,导致第一次循环的输入就不符合规则。
- 循环内未用截断后的字符串作为下一次输入:循环里你始终把完整的32位哈希作为下一次MD5的输入,而非每次截断后的16位字符串。同时你仅打印截断结果,却未将截断后的值赋值给变量作为后续输入,导致流程逻辑断裂。
- 流程次数不匹配:需求要求重复「MD5编码→截断最后16位」流程50次,原代码在循环前多做了一次无截断的MD5操作,整体执行次数与要求不符。
修正后的代码
import hashlib current_str = 'MjhjMmRmMTIzMWFlOWVkMA==' # 初始输入 # 重复执行50次「MD5编码→截断最后16位」流程 for _ in range(50): # 对当前字符串生成MD5十六进制哈希 md5_result = hashlib.md5(current_str.encode()).hexdigest() # 截断最后16个字符,保留前16位作为下一次输入 current_str = md5_result[:-16] # 输出最终结果 print(current_str)
修正说明
- 从初始输入直接进入循环,每次完整执行「MD5编码→截断」的流程,确保每一步输入都是上一次截断后的16位字符串。
- 将截断后的字符串赋值给
current_str,作为下一次循环的输入,保证流程连贯符合要求。 - 循环严格执行50次,完全匹配需求中的重复次数要求,最终输出即为第50次截断后的目标哈希值。
内容的提问来源于stack exchange,提问作者TheTroglodyte
相关产品推荐
相关产品推荐

