C#UUID版本4独立生成器和UUID验证

时间:2014-04-10 00:20:11

标签: c# postgresql mono guid uuid

对于我的分布式存储密钥,我想使用UUID v4,而.NET Framework的System.Guid正是如此。但是,如果Mono给出相同的v4,我现在无法测试? C#/ F#中是否有独立的v4生成器?是否有规范说.NET / Mono GUID始终是版本4? (谷歌搜索,无法找到)

此外,我想用GUID v4做一些破解。鉴于它的格式是xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,我想用自定义HEX号替换 4 。当我的GUID在我的系统中生成时,我需要这个嵌入一种纪元信息,我知道最大的纪元数永远不会达到HEX f

问题是这是否安全且未来证明?您是否知道任何软件以某种方式验证Guids的方式除了'它必须是大约128位'?我担心举例如5而不是4可以打破某些东西,例如PostgreSQL uuid列类型或在某些类似的情况下。我无法测试可能发生的所有情况。我使用System.Guid.Parse()测试了所有数字而不是4,它运行正常,但我不知道这是运气还是规格。

1 个答案:

答案 0 :(得分:1)

根据UUID的规格 http://www.ietf.org/rfc/rfc4122.txt

我引用(这是在v4部分下):

符合URN语法:       UUID的字符串表示与。完全兼容       URN语法。从位内向转换时       将UUID表示为URN,必须注意       严格遵守字符串中提到的字节顺序问题       代表部分。

验证机制:       除了确定UUID的时间戳部分之外       在未来,因此尚未指定,没有       确定UUID是否有效的机制。

**我认为如果无法进行验证,只要时间戳是未来,任何软件都不应该抱怨您手动生成的UUID

相关问题