首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"UUIDv4生成libaries“-vs-”只是用随机十六进制字符或位来滚动您自己的

"UUIDv4生成libaries“-vs-”只是用随机十六进制字符或位来滚动您自己的
EN

Stack Overflow用户
提问于 2016-04-04 10:21:23
回答 1查看 401关注 0票数 1

关于UUID4的构成问题,根据维基百科.

版本4 UUID的形式为xxxxxxxx-xxxx-4 yxxx yxxx-xxxxxxxx,其中x是任何十六进制数字,y是8、9、A或B之一。

因此,我可以想到三种可能的方法,程序员可以使用这些方法生成随机的UUID4:

( MethodA)使用已经存在的“适当”UUID4生成库.

-或者-

( MethodB)只需在string:上使用一个随机的十六进制字符就可以自行滚动。

  • 以字符串“xxxxxxxx xxxx-4 4xxx yxxx-xxxxxxxx”开始。
  • 将"x“字符替换为随机十六进制字符(0-9a-f)
  • 将"y“替换为:8,9 a,b中的任何一种

上面的步骤只是一个简单的例子,说明了如何将其作为字符串来完成。请考虑对字符串进行操作并随机选择十六进制字符的任何其他方法仍然是"MethodB",例如,从空字符串开始,每次追加一个字符。

-或者-

MethodC:按位操作的滚动操作:

我想大多数图书馆都是这样做的吧?使用大多数随机位,同时确保"4“和"8/9/a/b”处于最后生成的字符串中。

问题:

Q1:从技术上讲,在生成的 UUIDv4中是否存在任何差异,这些差异将根据它们的随机性或与数据库的一般兼容性,等等来存储UUIDv4?

Q2:对#1或#3 (按位)使用方法2(随机十六进制字符)有什么缺点吗?

Q3:除了MethodB和MethodC中的简单方法之外,MethodA中的“适当”UUIDv4生成库做了什么特别的事情吗?

Q4:有什么方法更像是遇到冲突吗?

Q5:由MethodB + MethodC生成的生成的UUID是否完全符合UUIDv4规范(即使它们在实现方法上不兼容)。

备注:

  • 这个问题只涉及UUID第4版。
  • 显然,只使用库更容易,我只是询问生成的生成的UUIDv4 outcome中的差异,而不是程序员付出的工作量。
  • 我也不太关心以上问题的表现。但是如果你对此也有任何评论的话,那可能也很有趣。我认为库的性能更好。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-10 06:26:57

Q1:从技术上讲,生成的UUIDv4在随机性或与数据库的一般兼容性等方面是否存在差异,这些差异将存储UUIDv4?

严格来说没什么区别。

Q2:对#1或#3 (按位)使用方法2(随机十六进制字符)有什么缺点吗?

没有缺点;不完全是。

Q3:除了MethodB和MethodC中的简单方法之外,MethodA中的“适当”UUIDv4生成库做了什么特别的事情吗?

库一般都是按照MethodC的意思做的

Q4:有什么方法更像是遇到冲突吗?

不怎么有意思。

Q5: MethodB + MethodC生成的UUID是否完全符合UUIDv4规范(即使它们在实现方法上不兼容)。

是。

成功生成(RFC 4122变体)版本4 UUID并不复杂,但需要对随机数生成有一定的了解。例如,“伪随机”数字生成与“密码”质量随机数生成之间的区别。

例如,一个非常简单的“伪随机”数字生成器通常会产生与“随机”数相同的序列;这常常足以使“种子”被引入来改变随机数序列。

当然,每次调用UUID生成器时生成相同的UUID也很烦人。因此,“伪随机”数字生成器对于生成UUID来说并不理想。

"Crypto“质量的随机数可能要随机得多,并且被大多数UUID版本4生成器使用。

简而言之,最好的UUID版本4生成器是基于最佳随机数生成器的生成器。RFC 4122的4.4节给出了如何实现UUID 4随机性更高程度的建议。

有一个梳状UUID是从RFC 4122变体派生出来的,您可能会感兴趣。

-奖励:您可能需要查看Mahonri Moriancumer的UUID和GUID发生器和法医页面。它使用加密质量的随机数生成器生成版本4的UUID。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36400040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档