我尝试创建一个将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循环内创建一个新的哈希对象?