我的代码:

    for chars in chain(ALC, product(ALC, repeat=2), product(ALC, repeat=3)):
    a = hashlib.md5()
    a.update(chars.encode('utf-8'))
    print(''.join(chars))
    print(a.hexdigest())


它抛出:

Traceback (most recent call last):
File "pyCrack.py", line 18, in <module>
a.update(chars.encode('utf-8'))
AttributeError: 'tuple' object has no attribute 'encode'


完整输出:http://pastebin.com/p1rEcn9H
尝试移至“ aa”后,似乎引发了错误。
我将如何解决这个问题?

最佳答案

您正在一起异类化,这是造成头痛的一定原因。

大概chain是一个字符串,因此ALC首先产生该字符串中的所有字符。当它移到chain时,它开始产生product(ALC, repeat=2),因为tuple是这样工作的。

只需从您的product调用中产生同质类型(即,总是产生元组,在需要字符串时chain将它们元组化),然后头痛就消失了。

for chars in chain(*[product(ALC, repeat=n) for n in range(1,4)]):
    ...
    a.update(''.join(chars).encode('utf-8'))

关于python - Python AttributeError:“tuple”对象在hashlib.encode中没有属性“encode”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23690224/

10-12 21:25