我正在尝试使用用户交互创建散列函数。 想法是用户选择他/她想要的哈希值(即md5,sha1等),程序完成其余的操作。
我的代码:
hashstring = "hashlib" + finalHash
filePath = open(chosenFile, 'rb')
data = filePath.read(8192)
if not data:
return
hashstring.update(data) # The line that causes error
return hashstring.hexdigest()
finalHash
来自字典(包括md5被选中)'.md5()'
,因此来自hashstring
的字符串为'hashlib.md5()
。
我收到错误:AttributeError: 'str' object has no attribute 'update'
,错误指向显而易见的:hashstring
是一个字符串(正如我声明的那样),我的问题是:我如何转换或以其他方式制作它可用吗?
答案 0 :(得分:2)
您可以使用getattr
:
import hashlib
chosenFile = '/etc/passwd'
finalHash = input('Which hash function?') # raw_input in Python 2
assert finalHash in ['md5', 'sha1'] # Optional
h = getattr(hashlib, finalHash)
h.update(open(chosenFile, 'rb').read())
print(h.hexdigest())
请注意,输入不得包含点或括号。如果您想允许用户输入md5()
左右,则必须先删除括号。