我的代码:
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“之后,似乎抛出了错误。我该如何着手解决这个问题呢?
发布于 2014-05-16 07:24:14
您正在将异构类型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'))发布于 2014-05-16 07:21:18
您的错误是试图将此元组转换为utf-8。尝试删除此行"a.update(chars.encode('utf-8')“
当解释器显示"' tuple‘对象没有属性'encode’意味着对象元组不支持以这种方式转换。
但是,如果您想转换所有这些内容,请在程序的第一行使用#coding: utf-8。
https://stackoverflow.com/questions/23690224
复制相似问题