Math 猜测(匹配)Guid的概率是多少?

Math 猜测(匹配)Guid的概率是多少?,math,guid,probability,Math,Guid,Probability,只是好奇,但匹配Guid的概率是多少 假设来自SQL server的Guid:5AC7E650-CFC3-4534-803C-E7E5BBE29B3D 它是阶乘吗?:(36*32)!=(1152)! 讨论 =D它是1/(给定UID长度下可能出现的唯一数字的数量)。在上面的例子中,我们看到16个字节,或128位。2^128,所以匹配的概率是1/2^128。可能的GUID(128位值)的数量是2^128或3.4×10^38-大约是地球整个体积的每立方毫米2万亿 换句话说,有点低 (地球体积参考资料来

只是好奇,但匹配Guid的概率是多少

假设来自SQL server的Guid:5AC7E650-CFC3-4534-803C-E7E5BBE29B3D

它是阶乘吗?:(36*32)!=(1152)!

讨论
=D

它是1/(给定UID长度下可能出现的唯一数字的数量)。在上面的例子中,我们看到16个字节,或128位。2^128,所以匹配的概率是1/2^128。

可能的GUID(128位值)的数量是2^128或3.4×10^38-大约是地球整个体积的每立方毫米2万亿

换句话说,有点低


(地球体积参考资料来源:维基百科)

取决于GUID生成算法的类型。目前的算法使用124个随机比特,因此概率为1/2^124


使用较旧的算法(使用时间和MAC地址)的概率要高得多。

您的计算有很多错误。 首先,36*32表示任何字母数字字符都可以是GUID的一部分。事实并非如此;只允许使用十六进制字符

其次,计算唯一guid的数量 有效字符数(16:0-9,A-F)^ GUID长度(32个字符)

所以我们有16^32==>2^(4^32)==>2^128


猜测任何一个GUID的几率为1/2^128。

这取决于生成的GUID数量。这与统计学中的生日问题类似。请参阅Wikipedia和(这一个特别有一个GUID示例)


一般来说,在N个可能的guid上生成M个guid的冲突概率是
1-(1-(1/N))^C(M,2)
其中
C(M,2)
是'M choose 2'

不清楚您在问什么。我有两种方法来解释你的问题

  • 给定GUID
    g
    ,有人猜到它的概率是多少?为了简单起见,让我们假设GUID的所有128位都可用。然后猜测
    g
    的概率是
    2^-128
    。那很小。让我们从中获得一些直觉。让我们假设攻击者每秒可以生成10亿个guid。为了有50%的机会猜测
    g
    ,我们的攻击者必须生成2^127个guid。以每秒10亿的速度,需要5391448762278159040348年才能生成2^127个GUI

  • 我们正在生成一个guid集合。发生碰撞的可能性有多大?也就是说,我们生成两个具有相同值的guid的可能性有多大?这就是生日悖论。如果随机生成n个guid序列,则至少发生一次冲突的概率约为
    p(n)=1-exp(-n^2/2*2^128)
    (这是生日问题,可能的生日数为2^128)

  • np(n)
    2^30 1.69e-21
    2^40 1.77e-15
    2^50 1.86e-10
    2^60 1.95e-03


    因此,即使生成2^60个guid,发生冲突的可能性也非常小。如果每秒可以生成10亿个guid,那么仍然需要36年的时间才能有1.95e-03的碰撞几率。

    让我们想想,一到。。。如果GUID中只有两个字符,它会是(2*36)?36*36听起来更像。。。算出三个字符,然后看看答案看起来有什么意义。为什么你会认为这是一个阶乘呢。只有在不能重复值的情况下才会出现这种情况。我敢打赌,这些字段中只有一个(例如E7E5BBE29B3D)是随机的。其他是固定的(例如,通过主机或服务器实例)或基于当前时间。这严重降低了可能性。我认为26个字母加上10个可能的数字可以为GUID中的一个位置(不包括破折号)生成36个可能的值。不知道为什么我会想到阶乘,大概是粗略的记忆=\这假设GUID的每个字节都是真正随机的。为了确保guid在主机之间是唯一的,UUID的大多数部分实际上是固定的(例如MAC地址)。然后用当前时间填充其余部分,几个字节是随机的。当你知道一些先前生成的UUID时,甚至那些随机字节也是可以猜测的。)比如说48位MAC地址+64位微时间。128-48-64=16. 我想说的是,赔率更接近2^16,而不是2^128。2^64正确吗?2^128的一半是2^127。统计不是我的强项,所以可能只需要sqrt(n)就可以达到50%的阈值。