是否可以从UUID V5获取名称或命名空间?

问题描述 投票:0回答:1

是否可以从给定的 UUID 解码命名空间或名称?

想象一下,您有一栋具有特定 UUID 和代码的房子,现在您需要仅通过查看 UUID 来了解门或窗户是否属于该房子。

我的想法是以某种方式将房屋代码放入门窗 UUID 中。然后以某种方式检查生成的 id 是否属于房屋,并从中提取房屋代码。

hash md5 uuid sha1
1个回答
3
投票

是否可以从 UUID V5 获取名称或命名空间?

不。 无法从类型 3 或类型 5 UUID 中提取名称或命名空间。

这两种 UUID 类型是通过使用 MD5 或 SHA1 从组合名称和命名空间的字符串生成 128 或 160 位哈希值来生成的。 然后散列的一些位被丢弃。

在数学上不可能反转哈希函数(因为鸽洞原理),因此即使 UUID 包含完整的哈希值,也无法提取原始名称或命名空间。

另请参阅:

  • 通用唯一标识符:版本 3 和 5
上面写着:

“版本 3 和版本 5 UUID 具有相同的命名空间和名称将映射到相同 UUID 的属性。 但是,即使指定了其中之一,也无法从 UUID 确定命名空间和名称,除非通过暴力搜索。 RFC 4122 建议使用版本 5 (SHA-1) 而不是版本 3 (MD5),并警告不要使用以下任一版本的 UUID版本作为安全凭证。”

(即便如此,强力搜索方法也

告诉您,您已恢复的名称/命名空间可能是用于创建UUID的名称/命名空间。)


如果您想在标识符中对房屋(或其他)的 UUID 和代码进行编码,那么您需要对信息的某些表示形式使用

可逆转换;例如Base64 编码(不安全)或公钥或私钥加密(可能安全)。

© www.soinside.com 2019 - 2024. All rights reserved.