【问题标题】:How to hash a GUID and a 64-bit timestamp into another GUID如何将 GUID 和 64 位时间戳散列到另一个 GUID
【发布时间】:2026-02-15 03:35:02
【问题描述】:

我们正在使用一个专有数据库,并有一个表,其语义复合键由一个 128 位 GUID 和一个 64 位时间戳组成。 “语义复合键”是指表中可能出现多条具有相同 GUID 的记录,以及具有相同时间戳的多条记录;但是这对(GUID,时间戳)是唯一的。作为更好地支持散列机制的增强,我们可以强制时间戳是完全唯一的,例如增加一毫秒。

专有数据库相当简约,有一个 128 位哈希密钥,我们希望使用它来快速访问。因此,我们需要将 GUID 和时间戳散列到一个 128 位字段中,即到另一个 GUID 中。

您能否提出一个最适合此目的的哈希函数?

【问题讨论】:

    标签: c++ hash guid


    【解决方案1】:

    MD5 怎么样?它具有合适的长度和良好的分布特性。在计算上比您拥有的两个字段的 XOR 更密集,是的。

    【讨论】: