隨機(jī)數(shù)密碼破解

起因

當(dāng)然不是什么新發(fā)現(xiàn)。。。

事情的起因是,一個同學(xué)在朋友圈發(fā)表了一個狀態(tài),表示他因忘記旅行箱密碼而暴力破解,嘗試300次后成功破解。

回復(fù)區(qū)里大家對他的密碼到底是什么展開了討論,有人認(rèn)為他從000開始嘗試,300次后應(yīng)該密碼是299。也有人認(rèn)為300是個粗略的估計,可能是300多也可能是280+。

我比較認(rèn)同300是一個粗略估計的說法,但事實上人在暴力破解自己的密碼時,往往會優(yōu)先嘗試自己常用的組合形式而非從000一直干到999。

在這個前提之下,也就沒有必要真的去研究這位朋友的密碼到底是多少了,但是這反倒讓我更有興趣去了解一下暴力破解密碼的技巧。比如說,這個密碼箱的密碼你是不知道的,而其主人不是一個隨隨便便將自己生日或者000作為密碼的人,那么如果你采用每次用一個均勻分布隨機(jī)數(shù)來破解密碼,300次可以破解的概率是多少呢?

問題更加直觀的表達(dá)是,口袋里有1000個均質(zhì)小球,外觀質(zhì)量相同,一個是黑色球,999個白色球,每次取出一個,300次取出黑色球的概率是多少。

這里我故意含糊其辭,原因是這樣的,這個問題可以是“A:300次以內(nèi)取出黑色小球的概率”,也可以是“B:在第300次時取出黑色小球的概率”。

A與B是兩種不同的概率問題,雖然同屬古典概率模型,但計算方法不同,下面逐一分析。

A問題

A問題的計算方法可采用集合進(jìn)行計算,即全集是“1000個球中取300個”,關(guān)注的子集為“300個球中,包含所有1個黑球中的1個黑球和999個白球中的299個白球”,所以MATLAB計算這個問題:

p=nchoosek(1,1)*nchoosek(999,299)/nchoosek(1000,300);

結(jié)果是0.3

B問題

B問題就不同了,它指的是剛好在第300次抽中,這就意味著要經(jīng)歷299次失敗之后才能抽中,MATLAB的解答是:

N=1000;

p=1;

for i=1:299

? ? p=p*(1-1/N);

? ? N=N-1;

end

p=p/N;

結(jié)果是0.001

結(jié)論

有趣的是,繞了一大圈發(fā)現(xiàn)第300次抽中黑球和第一次抽中黑球概率是相同的,是不是很有意思!然而這個問題早已被人發(fā)現(xiàn),就像抓鬮一樣,第一個抓的人和第一百個抓的抓到獎品的概率實際上是相同的。

而A問題的結(jié)論則表明,這個概率就是等于300/1000,繞了一圈也白繞了。也就是說實驗的次數(shù)與成功概率成正比例。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言: 首先,這篇文章不是我寫的,但是他的價值很重 社會工程學(xué)的藝術(shù),在這里作者總結(jié)的很重,很敬佩這位大哥的思路和...
    deepseek米洛閱讀 4,707評論 0 24
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評論 25 709
  • 你的數(shù)學(xué)直覺怎么樣?你能憑借直覺,迅速地判斷出誰的概率大,誰的概率小嗎?下面就是 26 個這樣的問題。如果你感興趣...
    cnnjzc閱讀 7,460評論 0 12
  • 過去時閱讀 159評論 0 0
  • 過去,時間是海綿里的水,擠擠就出來。現(xiàn)在,時間是浪費(fèi)在瑣碎的事情上,理理、省省就有了。 我同桌已經(jīng)二胎了,說好的去...
    小碗月牙閱讀 380評論 1 2

友情鏈接更多精彩內(nèi)容