使用hashlib与用户交互进行哈希处理

时间:2013-04-01 15:27:26

标签: python hashlib

我正在尝试使用用户交互创建散列函数。 想法是用户选择他/她想要的哈希值(即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是一个字符串(正如我声明的那样),我的问题是:我如何转换或以其他方式制作它可用吗?

1 个答案:

答案 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()左右,则必须先删除括号。