【问题标题】:Uniqueness of hash(time)哈希唯一性(时间)
【发布时间】:2014-09-03 14:53:32
【问题描述】:

我想为交易创建一个唯一标识符。

是否唯一性:

hashlib.md5( ( time.time() ).encode('utf-8') ).hexdigest()

取决于处理器的架构(多处理)?

【问题讨论】:

  • 在散列之前它可能甚至不是唯一的。为什么要涉及时间?全局计数器有什么问题?

标签: python hash architecture md5 processor


【解决方案1】:

如果您需要唯一标识符,请使用 UUIDs。不要尝试使用时间戳来制作自己的 UUID 等效项。

【讨论】:

    【解决方案2】:

    哈希可以在不同的时间值发生冲突。您将需要使用 UUID - 特别是 UUID1(有多个版本的 UUID)

    https://docs.python.org/2/library/uuid.html#uuid.uuid1

    UUID1 使用时间作为输入,因此只要生成 UUID 的时间不同,就可以保证输出不同。

    【讨论】:

      【解决方案3】:

      首先,哈希不依赖于架构,因为哈希算法是算法,根据算法的定义,它们必须是“明确定义”的步骤才能实现某些目标,所以不,架构等不会产生任何影响。

      其次,md5 是不安全的,因为在“合理”时间内,不同的值可能具有相同的 md5 哈希值。 see wikipedia md5sum #security

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-15
        • 2018-07-31
        • 2011-01-29
        • 1970-01-01
        • 2013-09-12
        • 1970-01-01
        • 2015-02-19
        • 2011-09-28
        相关资源
        最近更新 更多