在一本讲代码安全的书里面看到一个很有意思的问题:
如果房间里有183个人,那么其中某个人和你的生日相同的概率是50%。然而,如果希望找到其中任意两个人生日相同的概率为50%,则房间里需要多少人呢?
答案是23。计算公式参看这里
这个就是生日悖论,结果要比我主观猜想的要小得多。也就是说你走进一个22人的教室,要其中一个人和你的生日相同的概率很小,但要其中任意两个生日相同的概率则很高。
转到代码安全中的哈希加密,情况转换成两段不同的字符(人),用哈希加密可能得到相同的密码(生日),而生日悖论的结果说明只要不关心是哪两个字符,找到两个匹配的难度会降低很多。
利用该理论来破解密码的方法就叫做“生日攻击”。