- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
来自 QUuid 上的 Qt5 引用:
QUuid QUuid::createUuid() [static]
On any platform other than Windows, this function returns a new UUID with variant QUuid::DCE and version QUuid::Random. If the /dev/urandom device exists, then the numbers used to construct the UUID will be of cryptographic quality, which will make the UUID unique. Otherwise, the numbers of the UUID will be obtained from the local pseudo-random number generator (qrand(), which is seeded by qsrand()) which is usually not of cryptograhic quality, which means that the UUID can't be guaranteed to be unique.
当在带有/dev/urandom 的平台上时,我如何判断/dev/urandom 实际上是否可用并且在该函数运行时将被该函数使用?
我怀疑这不是我的情况,基于我主要出于好奇而运行的这个小代码:
while(true){
QUuid u=QUuid::createUuid();
QString str=u.toString();
if(str.contains("2222")){
qDebug()<<"UUID:"<<str;
return;
}
}
当我重复运行它时,会产生以下输出:
1 UUID: "{8b42222b-bac3-4c93-b55d-0255a33115a2}"
2 UUID: "{5122227e-473e-4885-8285-8780cc51f71a}"
3 UUID: "{bfeed28f-f8da-4a69-9303-77388752222e}"
4 UUID: "{0000beee-690c-4875-9589-9e222222cedc}"
5 UUID: "{e5a2646d-1c81-4974-94ad-8b222265b67a}"
6 UUID: "{bb77d756-6726-4e9f-94d8-3d4892222a2f}"
请注意第 4 行中看起来相当奇怪的输出,以及第 3 列和第 4 列中的其他明显对称性(除了第 3 列开头的 4,这是预期的)。
谢谢!
最佳答案
第 4 行的输出几乎肯定只是随机机会。 6 个 UUID 的样本不足以提供任何随机性指示,如果您确实想确定,您需要测试大量的 UUID(超出实际可行的数量)。
关于第 3 列和第 4 列,正如您所注意到的,第三列中的前导“4”是预期的,因为它表示 UUID 版本。第 4 列中的主值(b 55d、8 285、9 303,...)虽然也是预期的,但该值 will always be 8, 9, a, or b 。除了这些值之外,我在第三列和第四列中没有看到任何特定的对称性。
为了检查是否使用了 /dev/urandom
或 qrand()
,QUuid 类不会提供此信息,但如果您确实想知道,可以始终执行 QUuid 类所做的操作,并尝试从 /dev/urandom
打开和读取数据。我认为这可能有点矫枉过正。虽然在任何需要高质量随机数以确保安全的情况下我当然不会依赖 qrand()
,但它的实现 ( given how it's being seeded, ~line 959 ) 可能足以生成 UUID。
关于cryptography - 如何判断 QUuid::createUuid() 生成的 UUID 是否基于加密质量的熵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25038169/
来自 QUuid 上的 Qt5 引用: QUuid QUuid::createUuid() [static] On any platform other than Windows, this func
我是一名优秀的程序员,十分优秀!