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

时间:2014-05-15 23:13:54

标签: python object md5 encode

我的代码:

    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”之后抛出错误。 我该如何解决这个问题?

2 个答案:

答案 0 :(得分:4)

你将异构类型chain放在一起,这是令人头疼的一个原因。

大概ALC是一个字符串,所以chain首先产生字符串中的所有字符。当它移至product(ALC, repeat=2)时,它会开始产生tuple s,因为这就是product的工作原理。

只需从chain调用中生成同类型(即,在需要字符串时始终生成元组,join并且头痛消失。

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

答案 1 :(得分:-1)

您的错误是尝试将此元组转换为utf-8。请尝试删除此行&#34; a.update(chars.encode(&#39; utf-8&#39;)&#34;

当口译员显示&#34;&#39; tuple&#39;对象没有属性&#39;编码&#39;意味着对象元组不支持以这种方式转换。

但是,如果您想转换所有这些内容,请在程序的第一行使用#coding:utf-8。