散列时间字符串:为什么不接收相同的结果?

2024-09-28 18:52:51 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么以下代码不生成至少几个相同的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 Calculated: 52cae4a4231c812e5b79102a55721282 2015-04-26-09-50-24 Calculated: 0329298a8a18246fc1fc2f9878252dcf 2015-04-26-09-50-24 Calculated: 3db4562ca628a76c863f1308b8c41b04 2015-04-26-09-50-24 Calculated: 51c482a637405897cd5d91f2145e424f 2015-04-26-09-50-24 Calculated: 297eb85857fc85533a785fb13c200bdc 2015-04-26-09-50-24 Calculated: 4288a660c70ee9ed40a8e7611176af91 2015-04-26-09-50-24 Calculated: 4b998d607dba97578447d21cd82f6f33 2015-04-26-09-50-24 Calculated: 45b93b13df62be5e3616ee89b7e803cc 2015-04-26-09-50-24 Calculated: 0dbce249b10195b2a28b1825032e455c


Tags: 字符串代码importtimedefmd5hashlibhasher
1条回答
网友
1楼 · 发布于 2024-09-28 18:52:51

您没有重置哈希程序。因此,随后的散列是累积字符串的散列

更改为:

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())

相关问题 更多 >