对于我的分布式存储密钥,我想使用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,它运行正常,但我不知道这是运气还是规格。
答案 0 :(得分:1)
根据UUID的规格 http://www.ietf.org/rfc/rfc4122.txt
我引用(这是在v4部分下):
符合URN语法: UUID的字符串表示与。完全兼容 URN语法。从位内向转换时 将UUID表示为URN,必须注意 严格遵守字符串中提到的字节顺序问题 代表部分。
验证机制: 除了确定UUID的时间戳部分之外 在未来,因此尚未指定,没有 确定UUID是否有效的机制。
**我认为如果无法进行验证,只要时间戳是未来,任何软件都不应该抱怨您手动生成的UUID