您好,登錄后才能下訂單哦!
RSA是(Rivest Shamir and Adleman)的縮寫,Ron Rivest, AdiShamir 和Leonard Adleman這仨哥們挺NB的,20多年前創(chuàng)造了這個算法,現(xiàn)在也已經(jīng)廣泛使用了。
這是一種公鑰的加密算法,加密和解密是互逆的。如果用公鑰加密,私鑰解密,可實現(xiàn)保密通信;如果用私鑰加密,公鑰解密,可實現(xiàn)數(shù)字簽名。下面說一下算法:
1、首先選擇兩個大素數(shù)p和q
都要大于10^100,因為小素數(shù)很容分解
2、令n=p*q和z=(p-1)*(q-1)
這部沒什么可解釋的
3、選擇d,要求d與z互質(zhì)。
只要是互質(zhì)數(shù)都行
4、選擇e,要求e*d=1 (mod z)
一說這個mod就煩人了,這里的mod的意思是數(shù)學(xué)符號,并非編程的mod,好比a=b (mod c),意思是a和b除以c后,余數(shù)相同。
5、明文P被分為k位的塊,k要滿足2^k<n的最大整數(shù),于是0<=p<n。
這不沒什么可說的。
下面是加密和解密過程,先說公鑰加密,私鑰解密的過程:
1、公鑰加密用到e,n這兩個數(shù)。C=P^e (mod n)
C是加密后的密文,P是明文,e和n就是算出來的數(shù)字了,但是這里的mod是電腦編程里的運算符,意思是取余數(shù)。
解密用到d,n,P=C^d (mod n)
這樣明文P就出來了。
2、私鑰用到d,n這兩個數(shù)。C=P^d (mod n)
解密用到e,n這兩個數(shù)。P=C^e (mod n)
可以代兩個簡單的2位素數(shù)來試試,不過你會發(fā)現(xiàn),p和q很容易就被推算出來了,所以為什么說要大素數(shù)的原因就在這里。因為安全性是基于大素數(shù)分解的困難性,如果***者要分解200位的數(shù),需要40億年;500位的數(shù),需要10^25年。這就是為什么RSA的重大缺陷是無法從理論上把握它的保密性能如何。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。