1
|
Andrew Cheong · 技术社区 · 6 年前 |
![]() |
1
2
建议:前8位
所有的生成器实现都是 required to use the same algorithms 对于一个给定的版本,所以要担心后者而不是前者。 UUID version 1 &安培; version 2 对于一个给定的源,通常按从大到小的熵排列。因此,前8位数字最不可能发生碰撞。 UUID version 4 和 version 3 & 5 除了为 version 和 variant . 所以前8位数字和其他数字一样好。 |
![]() |
2
2
有一种方法可以工作,不管UUID规范有什么警告。由于UUID本身是全局唯一的,因此使用至少具有相同位大小的适当算法生成的安全哈希将具有相同的属性。 除了安全散列将通过散列值而不是特定位置具有熵之外。 例如,您可以执行以下操作:
然后根据需要从散列中取出尽可能多的位,并将它们转换回字符串。 不过,这是一个单向函数;要快速高效地将其映射回UUID,需要保留一个映射表。(当然,您可以通过再次对UUID执行单向哈希来检查UUID是否与较短的代码匹配) 但是,如果要从UUID中取出一个不连续的部分,则会出现相同的问题。 |