是否可以从给定的 UUID 解码命名空间或名称?
想象一下,您有一栋具有特定 UUID 和代码的房子,现在您需要仅通过查看 UUID 来了解门或窗户是否属于该房子。
我的想法是以某种方式将房屋代码放入门窗 UUID 中。然后以某种方式检查生成的 id 是否属于房屋,并从中提取房屋代码。
是否可以从 UUID V5 获取名称或命名空间?
不。 无法从类型 3 或类型 5 UUID 中提取名称或命名空间。
这两种 UUID 类型是通过使用 MD5 或 SHA1 从组合名称和命名空间的字符串生成 128 或 160 位哈希值来生成的。 然后散列的一些位被丢弃。
在数学上不可能反转哈希函数(因为鸽洞原理),因此即使 UUID 包含完整的哈希值,也无法提取原始名称或命名空间。
另请参阅:上面写着:
(即便如此,强力搜索方法也“版本 3 和版本 5 UUID 具有相同的命名空间和名称将映射到相同 UUID 的属性。 但是,即使指定了其中之一,也无法从 UUID 确定命名空间和名称,除非通过暴力搜索。 RFC 4122 建议使用版本 5 (SHA-1) 而不是版本 3 (MD5),并警告不要使用以下任一版本的 UUID版本作为安全凭证。”
仅告诉您,您已恢复的名称/命名空间可能是用于创建UUID的名称/命名空间。)
可逆转换;例如Base64 编码(不安全)或公钥或私钥加密(可能安全)。