如果我随机生成一个32个字符的字符串 - 我可以将此字符串用作所有意图和目的的GUID吗?
我生成的"GUID"是否会比"真正的"GUID具有更多或更少的碰撞可能性?
有关GUID的任何更具体的信息以及它们与随机字符串的比较表示赞赏.
GUID 不是 32 个字符的长字符串。所以不,你不能用它代替 GUID。
根据编码,一个字符可以是一个或两个字节,因此 32 个字符可以是 32 个字节或 64 个字节。GUID 是 16 个字节。如果您的生成器中具有等量的随机性,则您的字符串将产生较少的碰撞机会。也就是说,在 16 字节中发生冲突的可能性很小。
关键是您必须至少拥有与 Guid 生成器一样好的生成器才能使其物有所值。当您这样做时,请为其申请专利。
GUID生成算法考虑日期和时间以及生成随机数以创建最终的128位值.
如果您只是生成随机字符串而没有任何其他算法,那么是的,您将面临更大的冲突风险.(计算机无法创建真正的随机数,因此其他数据必须折叠到GUID gen算法中以降低冲突风险.例如,GUID v1使用计算机的MAC地址,但该方法已被弃用,因为它识别了生成计算机.)
您可以创建自己的GUID值,但为什么要重新发明已经运行良好的东西?
另外,请参阅Eric Lippert的答案,了解为什么使用GUID优于使用您自己的自制随机ID生成器.
| 归档时间: |
|
| 查看次数: |
1873 次 |
| 最近记录: |