如何使用变量作为python中的属性

问题描述 投票:1回答:3

我想编写一个用于蛮力哈希的Python脚本,允许用户将哈希算法作为字符串插入(结果:algorithm = "md5"),但是当我试图在hashlib库中使用这种脚本时:guess_hash = hashlib.algorithm(bytes(guess)).hexdigest(),它显然给了我这个错误:AttributeError: module 'hashlib' has no attribute 'algorithm'因此,我进行了快速研究,并尝试使用getattr像这样:getattr(hashlib,guess(bytes(guess1))).hexdigest()(可能真的错了),它给了我这个错误:TypeError: string argument without an encoding。我该怎么办?在此先感谢您,并感谢您的大意:)

python hash hashlib
3个回答
1
投票

您错过了将实际算法名称传递给getattr调用。


0
投票

简单胜于复杂。您可以只拥有一堆if语句,并在其中进行正确的调用。如果太多,则可以使用哈希图,其中键是字符串,值是函数。


0
投票

这实际上是bytes的抱怨(Python 3会抱怨,Python 2不会)。看来您也已经在algorithm中交换了guessgetattr的含义,并且您想做类似的事情>

getattr(hashlib, algorithm)(bytes(guess, 'utf-8')).hexdigest()
© www.soinside.com 2019 - 2024. All rights reserved.