【发布时间】:2018-01-20 07:42:10
【问题描述】:
我正在尝试创建一个函数,该函数将采用 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 循环内创建新的哈希对象?
【问题讨论】:
-
我建议你升级到Python 3,这样你就可以使用hashlib.pbkdf2_hmac
-
@PM2Ring 这是一个哈希破解框架,所以我试图破解哈希,而不是存储它
标签: python python-2.7 hash sha1