进行哈希摘要轮次

时间:2017-08-11 17:52:19

标签: python python-2.7 hash sha1

我尝试创建一个将sha1哈希值并将其自身更新500次的函数,例如:

>>> import hashlib
>>> d = hashlib.sha1()
>>> d.update("test")
>>> d.hexdigest()
'a94a8fe5ccb19ba61c4c0873d391e987982fbbd3'
>>> e = hashlib.sha1()
>>> e.update("a94a8fe5ccb19ba61c4c0873d391e987982fbbd3")
>>> e.hexdigest()
'c4033bff94b567a190e33faa551f411caef444f2'
>>> 

我想要做的是获取原始字符串test的哈希值,并将其从给定的哈希值转换为另一个哈希值。

我在这方面遇到了一些麻烦:

def sha1_rounds(string, salt=None, front=False, back=False, rounds=500, **placeholder):
    obj = hashlib.sha1()
    if salt is not None and front and not back:
        obj.update(salt + string)
    elif salt is not None and back and not front:
        obj.update(string + salt)
    else:
        obj.update(string)
    for _ in range(rounds):
        obj1 = obj.hexdigest()
        obj = obj.update(obj1)
    return obj.hexdigest()

运行此代码时,它会给我以下错误:

Traceback (most recent call last):
  File "<pyshell#93>", line 1, in <module>
    sha1_rounds("test")
  File "<pyshell#92>", line 10, in sha1_rounds
    obj1 = obj.hexdigest()
AttributeError: 'NoneType' object has no attribute 'hexdigest'

如果我正确理解了这一点,那么此错误告诉我的是,当我尝试重新更新哈希对象时,会导致None。但是,我尝试了一些不同的东西,而且我还不完全确定如何成功地做到这一点。如何在给定哈希的for循环内创建一个新的哈希对象?

0 个答案:

没有答案