微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

混合 uuidv4 和 uuidv5 碰撞安全吗?

如何解决混合 uuidv4 和 uuidv5 碰撞安全吗?

我有一个键值存储,其中的行由 uuid 索引。对于某些密钥,我使用 uuidv4 生成密钥。对于其他一些键,我从同一个键值存储中的另外两个 uuid 生成键。

例如

价值
2efd5459-fa72-4b28-a801-160e84fa049d 爱丽丝
99a975d8-cadf-460a-b9ab-ce8352414d89 鲍勃
2fc821c5-fa09-5a89-b355-e6d3b5b90fc8 alice_bob

alice_bob 行是通过 alice 和 bob 的 uuid 的 v5 生成的。

//    alice                                   bob
u.v5('2efd5459-fa72-4b28-a801-160e84fa049d','99a975d8-cadf-460a-b9ab-ce8352414d89')

在同一个 KV 存储中混合 v4 和 v5 是否比我只使用 v4 或只使用 v5 更容易发生冲突?

解决方法

引用自https://github.com/uuidjs/uuid/issues/579

RFC4122 UUID 包含版本编码,因此 [正确格式] v5 UUID 永远不会与 v4 UUID 冲突,反之亦然。

除此之外,冲突的几率取决于各个 UUID 版本的行为。 v4 UUID 的几率在其他地方有很好的记录。 (tl;博士“小得惊人”)。 v5 id 是确定性散列,因此它主要取决于您具有相同输入名称的几率,这不是我们可以控制的。 (理论上有可能两个不同的名称会产生相同的哈希值,但同样,这种可能性非常小。)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。