Python AttributeError:“ tuple”对象在hashlib.encode中没有属性“ encode”

use*_*145 0 python encode md5 object

我的代码:

    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())
Run Code Online (Sandbox Code Playgroud)

它抛出:

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'
Run Code Online (Sandbox Code Playgroud)

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

roi*_*ppi 5

chain在一起使用的是异类,这一定是引起头痛的原因。

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

只需从您的chain调用中产生同质类型(即始终产生元组,join在需要字符串时对其进行注释),就可以消除头痛。

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