为什么UUID / GUID的格式是原来的格式?


14

全局唯一标识符(GUID)是具有特定格式的分组字符串,我认为这是出于安全原因。

GUID最通常以文本形式写成十六进制数字序列,分为五个组,例如:

3F2504E0-4F89-11D3-9A0C-0305E82C3301

为什么GUID / UUID字符串不只是使用X长度的十六进制编码的随机字节?

此文本符号包含以下字段,并用连字符分隔:

| Hex digits | Description
|-------------------------
| 8            | Data1
| 4            | Data2
| 4            | Data3
| 4            | Initial two bytes from Data4
| 12           | Remaining six bytes from Data4

UUID标准也有多个版本

第4版UUID通常在内部存储为128位原始数组,并且通常以以下格式显示:

uuid:xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx


4
不,可能不是出于安全原因,带或不带破折号的位串具有相同的熵。我认为这样一来就可以一眼认出GUID,而不是去“这是一堆十六进制字符,是md5 ..或sha1 ..不,等等,可能是...”等等。同样,GUID通常不只是随机字节。



Answers:



2

带破折号的文本表示形式将Guid / UUID的四个字段分为五个组(最后一个字段在前两个字节后被分隔开):Guid文本编码

该表示形式与安全性没有任何关系,因为计算它的方式不同,并且旨在成为唯一的标识符,而不一定是安全的标识符。

字段被拆分的最可能原因(即使标准未提及)也是为了使组件易于阅读/分离。


2
这告诉我们格式是什么,问题中已经存在的信息。它没有解释为什么,这就是OP的要求。
基思·汤普森

1
只是将它们分为几个字段,可能会提高可读性和识别性。也许最后一个由于长度而被进一步拆分。
交钥匙2012年

1
符合逻辑 出于相同的原因,在打印或写下时,电话号码,信用卡号和许多其他长号通常会分成几组。
jwenting 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.