2
我試圖創建將採取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](https://docs.python.org/3 /library/hashlib.html#hashlib.pbkdf2_hmac) –
@ PM2Ring它是一個散列破解框架,所以我試圖打破散列,不存儲它 – mawi