生日悖論
生日悖論是指在不少於 23 個人中至少有兩人生日相同的概率大於 50%。例如在乙個 30 人的小學班級中,存在兩人生日相同的概率為 70%。對於 60 人的大班,這種概率要大於 99%。從引起邏輯矛盾的角度來說,生日悖論並不是一種 「悖論」。但這個數學事實十分反直覺,故稱之為乙個悖論。生日悖論的數學理論被應用於設計密碼學攻擊方法——生日攻擊。
講解設23個人中的乙個人為365天任選一天為365/365,第二個人則不能選第乙個人的生日為364/365,第三個人則不能選兩個人的生日為363/365:
/// @file main.cc
#include
intmain()
最後輸出結果如下:
:g++ main.cc -o main:.
/main
0.5072972343
將n改為99,結果為:
:./main
0.9941226609
應用
生日悖論普遍的應用於檢測雜湊函式:n 位長度的雜湊表可能發生碰撞測試次數不是 2n 次而是只有 2n/2 次。這一結論被應用到破解密碼雜湊函式 (cryptographic hash function) 的 「生日攻擊」 中。
生日攻擊是一種密碼學攻擊手段,這種攻擊手段可用於濫用兩個或多個集團之間的通訊。此攻擊依賴於在隨機攻擊中的高碰撞概率和固定置換次數(鴿巢原理)。使用生日攻擊,攻擊者可在中找到雜湊函式碰撞,為原像抗性安全性。
反思不要想當然。。
python中生日悖論分析 從生日悖論談雜湊碰撞
1 前言 前幾天和乙個大佬交流了幾個問題,其中乙個關於id生成的問題推展到了雜湊衝突和乙個與之相關的乙個數學趣題生日悖論。雜湊的對映壓縮和衝突 生日悖論 crc32的衝突分析 2.雜湊對映壓縮和衝突 雜湊的本質就是數學,簡單來說雜湊函式實現了各種長度和形式的輸入經過公開的雜湊函式的運算生成乙個固定長...
演算法問題 生日悖論
問題 乙個屋子裡人數必須要達到多少人,才能使其中兩人生日相同的機會達到50 為了回答這個問題,設 1 設k是屋子裡的總人數,對每乙個人進行編號,則編號為1,2,3 k 2 設所有年份都是365天,最大天數n 365 3 bi表示第i個人的生日天數,所以1 bi 360,1 i k public cl...
python 生日悖論概率計算。
生日悖論指如果乙個房間裡有23 或以上人,那麼至少有兩個人生日相同的 概率大於50 編寫程式,輸出在不同隨機樣本數量下,23 個人中至少兩個人生日相同的概率。from random import randint def list birth list birth for i in range 23 ...