如何确定QUuid :: createUuid()生成的UUID是否基于加密质量的证明?

伦纳特·罗兰德

从关于Quuid的Qt5参考中:

QUuid QUuid :: createUuid()[静态]

在Windows以外的任何平台上,此函数都会返回一个新的UUID,其变体为QUuid :: DCE,版本为QUuid :: Random。如果存在/ dev / urandom设备,则用于构造UUID的数字将具有加密质量,这将使UUID唯一。否则,将从本地伪随机数生成器(qrand(),由qsrand()播种)获得UUID的数字,该数字通常不具有加密质量,这意味着不能保证UUID独一无二。

当在具有/ 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以外)。

谢谢!

yon

在此处输入图片说明

您在第4行的输出几乎可以肯定只是随机机会。6 UUID数量不足,无法提供任何随机性指示,如果您确实想确定的话,则需要测试大量UUID(实际上不可行)。

关于第3列和第4列,您已经注意到,第3列的前导“ 4”是预期的,因为它表示UUID版本。在第4列中的领导值(b 55D,8 285 9 303,...),虽然也预计,该值将永远是8,9,A,或b在这些值之外,在第三和第四列中没有看到任何特定的对称性。

因为,如果检查/dev/urandomqrand()使用时,QUuid类不提供这方面的信息,但如果你真的想知道你总是可以做QUuid类做什么,并尝试从打开和读取数据/dev/urandom我认为这可能是过大的。虽然我当然不会qrand()在需要质量随机数的任何情况下依赖安全性,但是它的实现(考虑到它是如何播种的,〜行959)可能足以生成UUID。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

How can I tell if an UUID generated by QUuid::createUuid() is based on entrophy of cryptographic quality?

来自分类Dev

如何确定加密头的存在?

来自分类Dev

如何确定<a>是否被禁用

来自分类Dev

如何确定我是否可以使用HP安全加密

来自分类Dev

YouTube如何确定默认视频质量

来自分类Dev

如何确定USB充电器的质量?

来自分类Dev

如何确定我的鼠标是否位于随机生成的对象上方

来自分类Dev

如何使用MSBuild脚本确定生成源?

来自分类Dev

如何确定图像是否需要旋转

来自分类Dev

如何确定so文件是否已加载?

来自分类Dev

如何确定FTP目录是否存在

来自分类Dev

如何确定iPhone用户是否正在睡觉?

来自分类Dev

如何确定对象是否是PORO?

来自分类Dev

如何确定vimscript搜索是否成功?

来自分类Dev

如何确定图像是否饱和?

来自分类Dev

如何确定指针是否等于数组的元素?

来自分类Dev

如何确定变量是否未定义

来自分类Dev

如何确定Excel范围是否隐藏?

来自分类Dev

如何确定地址是否与缓存对齐?

来自分类Dev

如何确定输出流链是否结束?

来自分类Dev

如何确定LI是否有孩子UL

来自分类Dev

如何确定浮动元素是否已包装

来自分类Dev

如何确定Xcode是否支持模块?

来自分类Dev

您如何确定集合是否是瞬态的?

来自分类Dev

如何确定Apple方法是否异步?

来自分类Dev

如何确定游戏精灵是否运行平稳?

来自分类Dev

如何确定对象是否为空

来自分类Dev

MySQL如何确定INSERT是否唯一?

来自分类Dev

如何确定UIImage是否为空?