繞腦玩之讀Metrix67的跨越千年的RSA演算法

來源:互聯網
上載者:User

大學學過,學過就忘,忘了繼續學,然後繼續忘。就是因為不知道這個演算法的精髓是為了個啥。這次終於看懂了。找虐的同學歡迎移步Matrix原文觀看。覺得自己屌而不絲的,歡迎閱讀Matrix的blog,一分鐘讓你認識到是白癡哦,五分鐘感覺到每個字都認識但是每個句子都看不懂哦。
Matrix67的部落格是一次為了查點資料搜到的,看著很不錯就rss了。基本上屬於一直在訂閱,從來沒看懂的狀態囧rz……每次看都覺得自己像個白癡了。為了避免進入老年癡呆,為了曾經逃過的課,為了跟明白人吵架也不跟傻逼說話,為了部落,也為了聯盟……廢話多說了,花了n個小時通看了Matrix57的http://www.matrix67.com/blog/archives/5100 跨越千年的RSA演算法。

Martix大神寫的比較多,各種來龍去脈。下面總結個精簡版……(下面提到的所有數都是正整數+0,這個好像叫自然數?)

精髓就是費馬小定理(我嘞個去,小定理。費馬哥不如改名叫費腦啊)。簡單說這個定理就是:有倆質數p和q(怎麼看都是倆好基友),它們的乘積是n。然後對於任意正整數a,a的i次方mod n的結果肯定會以(p-1)(q-1)為周期迴圈(這個重複持續時間可能不是最小的,但是肯定會以這個周期迴圈)。精髓結束。
這個明明費腦但是非要叫費馬的小定理意思就是,a的一次方 mod n = a的(p-1)(q-1) + 1次方 mode n =  a的(p-1)(q-1) * 隨便一個整數 + 1 。所以這才叫做a的i次方mod n的結果以(p-1)(q-1)為周期迴圈。
(解釋一下上面的連等式為什麼要加1。因為a是a的一次方,周期是(p-1)(q-1),再加上個1才能跟a mod n相等。)

根據上面的牛逼定理。我們學電腦的恬不知恥不交專利費就這麼猥瑣的用來加密資料:

首先介紹一下上場的角色:m和n好基友,p和q倆質數好基友,e和d倆質數好基友。他們的關係是n=p*q。m=(p-1)(q-1)。(所以m就是那個隨便怎麼在次方裡加上幾個也不會改變mod結果的重複持續時間)。e*d mod m = 1。這裡面p和q倆質數是找出來的。m和n是簡單乘法算出來的,e和d確實比較麻煩,因為要求是質數,而且還要乘積mod m=1。總之有個什麼定理說肯定是可以算出來(好基友,拉拉手,算出來,一起走)。


下面開始猥瑣的加密過程:
1)公開e和n,稱之為公開金鑰。但是d一定要保密,d和n稱之為私密金鑰(從此e和d倆好基友只能通過加密解密苟且了)。a是要加密的資料,這個數肯定要小於n,這個其實問題不大,因為實際使用的時候n都是好幾百上千位的整數。 
2)加密方計算a的e次方 mod n,作為加密後的值,且稱為是b吧。將b傳遞給解密方。
3)解密方則計算b的d次方 mod n,那麼結果就肯定是a鳥。

推倒導如下:b的d次方 mod n = (a的e次方 mod n) 的d次方 mod n。反正都要最後mod n,次方無外乎就是乘法,所以無論有多少個n都是浮雲,也就是 = a的e*d次方mod n = a的m+1次方 mod n。因為m就是那個周期,所以=a的1次方 mod n = a mod n。而a小於n,所以a mod n = a。解密鳥終於解密鳥。

所以這個RSA才叫做非對稱式加密,因為e和d倆好基友,一個用來加密,只能用另一個來解密。而對稱式加密演算法則是用同一個數來加密解密。

下面分析一下為啥這個演算法不容易被破解:
recall一下演員們。mn,pq,ed。公布出來的是e和n。而解密需要d和n。所以不容易破解就是不容易根據e和n計算出d來。p和q倆幕後的好基友才是關鍵。因為可以說所有的數都是從他倆來的。m和n是,e和d則是通過一個演算法計算出來,演算法不是秘密,也就是說如果知道p和q那麼肯定可以得到e和d了。
n就=p*q呀。但是知道這個,還知道p和q是質數,就是不好算出p和q是啥。 其實也不是不能算,就是不好算出來而已。n是公開的,大不了迴圈一個個去從1到n算除法。所以n的大小決定了破解的難度。p和q要比較大的質數,n也會非常大。假設n是一千位的整數吧(我也不知道實際使用的是多少位……)。那麼真正迴圈要多久才能破了p和q捏:
現在主流的CPU是3Ghz不錯了。也就是說一秒鐘計算大概10億次=1後面9個0,一天不到9w秒,且算10w吧,5個0。也就是一天算大概是計算1後面14個0。一千位的整數是1後面999個零。14個0簡直就是渣渣囧rz……。換算成多少年就不說了,沒意義了。估計夠宇宙湮滅又誕生好幾次吧……

所以RSA難破的根兒就是倆很屌的質數的乘積給出來,很難被找出這倆很屌的質數到底是啥。質數就是這麼屌。 


不得不感歎一下,知識和智慧真心是倆玩意。其實通篇都只是整數的加減乘除法而已,小學生也能看懂。但是能看著這些規律,真的要智慧而不是知識。

不得不再感歎一下,鋼琴曲啥的,真的可能有助於短期提升智力。反正我是睜著眼看了好久沒看懂剩餘定理,聽著鋼琴曲閉著眼想通了。

不得不再再感歎一下,早知道質數這麼屌,就應該也裝B在換手機號的時候非質數手機號不要。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.