2015-04-26 41 views
1

爲什麼下面的代碼不會產生至少有幾個相同的MD5字符串:哈希時間字符串:爲什麼不會收到相同的結果?

import hashlib 
import time 

hasher = hashlib.md5() 

def calcHash(): 
     localtime = time.localtime() 
     timeString = time.strftime("%Y-%m-%d-%H-%M-%S", localtime) 
     print(timeString) 
     hasher.update(timeString.encode('utf-8')) 
     print("Calculated: " + hasher.hexdigest()) 

for i in range(1,10): 
     calcHash() 

我喂不時間戳,但是生成的字符串散列器。如果我將相同的字符串兩次送入哈希器,我會期待相同的MD5哈希值。

2015-04-26-09-50-24計算:52cae4a4231c812e5b79102a55721282 2015-04-26-09-50-24計算:0329298a8a18246fc1fc2f9878252dcf 2015-04-26-09-50-24計算:3db4562ca628a76c863f1308b8c41b04 2015-04-26-09-50-24計算:51c482a637405897cd5d91f2145e424f 2015-04-26-09-50-24計算:297eb85857fc85533a785fb13c200bdc 2015-04-26-09-50-24計算:4288a660c70ee9ed40a8e7611176af91 2015-04- 26-09-50-24已計算:4b998d607dba97578447d21cd82f6f33 2015-04-26-09-50-24已計算:45b93b13df62be5e3616ee89b7e803cc 2015-04-26-09-50-24已計算:0dbce249b1019 5b2a28b1825032e455c

回答

4

您沒有重置hasher。因此,隨後的哈希值就是累積字符串的哈希值。

更改爲:

def calcHash(): 
     hasher = hashlib.md5() 
     localtime = time.localtime() 
     timeString = time.strftime("%Y-%m-%d-%H-%M-%S", localtime) 
     print(timeString) 
     hasher.update(timeString.encode('utf-8')) 
     print("Calculated: " + hasher.hexdigest()) 
相關問題