【发布时间】:2014-09-03 14:53:32
【问题描述】:
我想为交易创建一个唯一标识符。
是否唯一性:
hashlib.md5( ( time.time() ).encode('utf-8') ).hexdigest()
取决于处理器的架构(多处理)?
【问题讨论】:
-
在散列之前它可能甚至不是唯一的。为什么要涉及时间?全局计数器有什么问题?
标签: python hash architecture md5 processor
我想为交易创建一个唯一标识符。
是否唯一性:
hashlib.md5( ( time.time() ).encode('utf-8') ).hexdigest()
取决于处理器的架构(多处理)?
【问题讨论】:
标签: python hash architecture md5 processor
如果您需要唯一标识符,请使用 UUIDs。不要尝试使用时间戳来制作自己的 UUID 等效项。
【讨论】:
哈希可以在不同的时间值发生冲突。您将需要使用 UUID - 特别是 UUID1(有多个版本的 UUID)
https://docs.python.org/2/library/uuid.html#uuid.uuid1
UUID1 使用时间作为输入,因此只要生成 UUID 的时间不同,就可以保证输出不同。
【讨论】:
首先,哈希不依赖于架构,因为哈希算法是算法,根据算法的定义,它们必须是“明确定义”的步骤才能实现某些目标,所以不,架构等不会产生任何影响。
其次,md5 是不安全的,因为在“合理”时间内,不同的值可能具有相同的 md5 哈希值。 see wikipedia md5sum #security
【讨论】: