• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            The Fourth Dimension Space

            枯葉北風(fēng)寒,忽然年以殘,念往昔,語(yǔ)默心酸。二十光陰無(wú)一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢(mèng)令

            POJ 2447 破解RSA(經(jīng)典公鑰算法)

            周五剛好在俞研的網(wǎng)絡(luò)安全課上學(xué)了RSA,回來(lái)想實(shí)現(xiàn)以下,由于以前數(shù)論方面的積累還算比較深厚,很快就過(guò)了這一題,呵呵:-)
            總結(jié)一下吧,這題可以說(shuō)是數(shù)論部分的一個(gè)大綜合題,因?yàn)樗鼘⑺惴▽?dǎo)論上數(shù)論這部分的知識(shí)點(diǎn)全部包含了進(jìn)來(lái),包括gcd,擴(kuò)展gcd,模線性方程,a^b mod c(還是比較難的那種,相關(guān)題目可以看一下FOZ上面的2道題),miller-rabin素?cái)?shù)測(cè)試,pollard_rho質(zhì)因數(shù)分解等等,把這題搞定了說(shuō)明你對(duì)算法導(dǎo)論的數(shù)論部分已經(jīng)可以做到熟練掌握了,相當(dāng)于<算法導(dǎo)論>數(shù)論部分的期末測(cè)試,呵呵^_^。
            下面簡(jiǎn)要的說(shuō)一下這題的做法,首先簡(jiǎn)要介紹一下RSA算法加密解密的過(guò)程:
            我們首先生成兩個(gè)大的素?cái)?shù)P,Q,乘起來(lái)得N=P*Q.然后算出N的歐拉函數(shù)Phi(N)=(P-1)*(Q-1).(什么是歐拉函數(shù)?這個(gè)世界上有一種東西叫做百度...),然后我們?nèi)∫粋€(gè)范圍在[1,phi(N)]中且與phi(N)互質(zhì)的正整數(shù)E.它就是所謂的公鑰。得到公鑰之后,我們?cè)偎愠鯡關(guān)于phi(N)的逆元D,即E*D mod phi(N)=1.這個(gè)D就是私鑰。在得到這些數(shù)據(jù)以后,P,Q被丟棄,E,N做為公鑰被公開,D做為私鑰被解密人私人保存。

            好了,下面看一下如何用公鑰和私鑰對(duì)數(shù)據(jù)進(jìn)行加密解密。
            假設(shè)有一個(gè)明文M,那么它所對(duì)應(yīng)的密文就是C=M^E mod N.
            如果我們現(xiàn)在得到一個(gè)密文C,那么它所對(duì)應(yīng)的明文就是M=C^D mod N
            也就是說(shuō),任何人都可以用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,但是只有擁有私鑰的人才可以對(duì)數(shù)據(jù)進(jìn)行解密。

            那么RSA算法為什么不易被破解呢?從解密的過(guò)程來(lái)看如果你能夠知道D那么你就能解密數(shù)據(jù)。而E,D是逆元關(guān)系,要求出D,需要知道phi(N),由于N非常之大,普通的做法是從1開始枚舉到N-1,計(jì)算和N互質(zhì)的元素個(gè)數(shù)。可是N可以是幾百位到上千位的數(shù)字,普通的計(jì)算機(jī)只能在1s內(nèi)算到10^8量級(jí),顯然是不可能破解的。唯一有可能的方法基于大素?cái)?shù)分解,如果你能將N分解成P*Q的乘積。那么就可以直接利用公式phi(N)=(P-1)*(Q-1)繞開暴力求解歐拉函數(shù)的過(guò)程,從而實(shí)現(xiàn)RSA的破解。

            這道題就是模擬這個(gè)破解過(guò)程,下面來(lái)說(shuō)說(shuō)具體的做法:
            1.首先用miller-rabin,pollard_rho做大整數(shù)的質(zhì)因數(shù)分解,得到兩個(gè)素?cái)?shù)P,Q,pollard_rho的復(fù)雜度在N^0.25次方,那么一個(gè)64位的整數(shù) 要計(jì)算的次數(shù)為 2^64^0.25=2^16 =65536次,可以瞬間出解。
            2.求出phi(N)=(P-1)*(Q-1)
            3.然后用ext_gcd求出E關(guān)于phi(N)的逆元。
            4.用得到的私鑰對(duì)數(shù)據(jù)C進(jìn)行解密即可。

            PS:對(duì)這題而言,僅僅完成上述步驟還是不夠的。因?yàn)镹達(dá)到2^62次方,即使是使用無(wú)符號(hào)long long ,也很容易因?yàn)槌龀朔ú僮鞫绯觥_@也是網(wǎng)上說(shuō)要避免使用擴(kuò)展歐幾里德的原因。其實(shí)實(shí)現(xiàn)的時(shí)候,我們可以自己寫一個(gè)特殊的乘法(內(nèi)部用加法實(shí)現(xiàn)),由于使用的無(wú)符號(hào)的long long ,第64位剛好可以用來(lái)保存兩個(gè)數(shù)加過(guò)之后的進(jìn)位位,再模除又可以保證其在2^62范圍內(nèi),即可避免溢出。

            posted on 2010-05-22 14:39 abilitytao 閱讀(3068) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            免费观看久久精彩视频| 久久婷婷午色综合夜啪| 97精品依人久久久大香线蕉97| 久久乐国产综合亚洲精品| 亚洲成色WWW久久网站| 国产V亚洲V天堂无码久久久| 久久久久无码专区亚洲av| 狠狠色狠狠色综合久久| 99精品国产在热久久无毒不卡 | 久久综合给久久狠狠97色 | 麻豆av久久av盛宴av| 国产成人精品免费久久久久| 人妻中文久久久久| 精品久久久久久亚洲精品 | 精品国产日韩久久亚洲| 久久无码人妻一区二区三区 | 国产精品岛国久久久久| 一本久久a久久精品综合香蕉| AV狠狠色丁香婷婷综合久久| 香蕉久久夜色精品国产2020| 99久久国产免费福利| 国内精品久久久久影院优 | 国产真实乱对白精彩久久| 久久久噜噜噜久久熟女AA片| 久久亚洲精品国产精品婷婷| 久久九九久精品国产| 国产高清国内精品福利99久久| 精品久久久久久亚洲精品 | 国产精品一区二区久久| 性欧美大战久久久久久久久 | 久久久久久久综合日本亚洲| 精品永久久福利一区二区| av色综合久久天堂av色综合在 | 亚洲国产欧美国产综合久久| 欧美亚洲国产精品久久久久| 波多野结衣久久精品| 中文字幕无码久久人妻| 久久天天躁夜夜躁狠狠躁2022| 久久人人爽人人爽人人片AV高清| 久久人人爽人人爽人人片AV麻烦| 久久精品人人做人人爽电影|