我的代码:
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/