如何在Python3中实现PHP的md5(sha1(time()))等效功能
实现代码
import time import hashlib # 完全对齐PHP md5(sha1(time()))逻辑实现 # 1. 获取秒级时间戳,转为字符串后编码为bytes类型 timestamp = str(int(time.time())).encode("utf-8") # 2. 计算时间戳的SHA1哈希,得到40位十六进制字符串 sha1_result = hashlib.sha1(timestamp).hexdigest() # 3. 对SHA1结果计算MD5哈希,得到最终32位十六进制字符串 md5_result = hashlib.md5(sha1_result.encode("utf-8")).hexdigest() # 如果你需要和你给出的长哈希示例一致(MD5结果拼接SHA1结果),使用下方输出 # final_result = md5_result + sha1_result # 仅需要原生md5(sha1(time()))返回值则使用下方输出 final_result = md5_result print(final_result)
原代码错误原因
- 逻辑缺失:PHP的逻辑是先对时间戳计算SHA1、再对SHA1的结果计算MD5,原代码直接对时间戳计算MD5,和目标逻辑不匹配
- 参数类型错误:
hashlib库的所有哈希方法仅接受bytes类型入参,不能直接传入整数类型的时间戳,需要先转字符串再编码为bytes格式
内容的提问来源于stack exchange,提问作者Henrik Schute
相关产品推荐
相关产品推荐

