1

我正在尝试通过用户交互创建一个散列函数。这个想法是用户选择他/她想要的哈希值(即 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()'因此来自的字符串hashstringis 'hashlib.md5()

我收到错误:AttributeError: 'str' object has no attribute 'update',错误指出我很明显:hashstring是一个字符串(正如我声明的那样),我的问题是:我如何转换或以其他方式使其按预期可用?

4

1 回答 1

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(),你必须先去掉括号。

于 2013-04-01T15:32:26.107 回答