RSA算法

RSA是(Rivest Shamir and Adleman)的縮寫,Ron Rivest, AdiShamir Leonard Adleman這仨哥們挺NB的,20多年前創造了這個算法,現在也已經廣泛使用了。

這是一種公鑰的加密算法,加密和解密是互逆的。如果用公鑰加密,私鑰解密,可實現保密通信;如果用私鑰加密,公鑰解密,可實現數字簽名。下面說一下算法:

1、首先選擇兩個大素數pq

都要大於10^100,因爲小素數很容分解

2、令n=p*qz=(p-1)*(q-1)   

這部沒什麼可解釋的

3、選擇d,要求dz互質。         

只要是互質數都行

4、選擇e,要求e*d=1 (mod z)    

一說這個mod就煩人了,這裏的mod的意思是數學符號,並非編程的mod,好比a=b (mod c),意思是ab除以c後,餘數相同。

5、明文P被分爲k位的塊,k要滿足2^k<n的最大整數,於是0<=p<n

這不沒什麼可說的。

 

下面是加密和解密過程,先說公鑰加密,私鑰解密的過程:

1、公鑰加密用到en這兩個數。C=P^e (mod n)

C是加密後的密文,P是明文,en就是算出來的數字了,但是這裏的mod是電腦編程裏的運算符,意思是取餘數。

    解密用到dnP=C^d (mod n)

    這樣明文P就出來了。

2、私鑰用到dn這兩個數。C=P^d (mod n)

    解密用到en這兩個數。P=C^e (mod n)

 

可以代兩個簡單的2位素數來試試,不過你會發現,pq很容易就被推算出來了,所以爲什麼說要大素數的原因就在這裏。因爲安全性是基於大素數分解的困難性,如果***者要分解200位的數,需要40億年;500位的數,需要10^25年。這就是爲什麼RSA的重大缺陷是無法從理論上把握它的保密性能如何。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章