關鍵詞:對稱加密算法,RSA算法,素數(質數),素數分布,數論。
歷史
1976年以前,所有的加密方法都是同一種模式:
(1)甲方選擇某一種加密規則,對信息進行加密;
(2)乙方使用同一種規則,對信息進行解密。
由于加密和解密使用同樣規則(簡稱"密鑰"),這被稱為“對稱加密算法”(Symmetric-key algorithm)
這種加密模式有一個最大弱點:甲方必須把加密規則告訴乙方,否則無法解密。保存和傳遞密鑰,就成了最頭疼的問題。
1976年,兩位美國計算機學家Whitfield Diffie?和Martin Hellman,提出了一種嶄新構思,可以在不直接傳遞密鑰的情況下,完成解密。這被稱為"Diffie-Hellman密鑰交換算法"。意味著加密和解密可以使用不同的規則,只要這兩種規則之間存在某種對應關系即可,這樣就避免了直接傳遞密鑰。
這種新的加密模式被稱為"非對稱加密算法"。
(1)乙方生成兩把密鑰(公鑰和私鑰)。公鑰是公開的,任何人都可以獲得,私鑰則是保密的。
(2)甲方獲取乙方的公鑰,然后用它對信息加密。
(3)乙方得到加密后的信息,用私鑰解密。
如果公鑰加密的信息只有私鑰解得開,那么只要私鑰不泄漏,通信就是安全的。
RSA算法相關
1977年,三位數學家Rivest、Shamir?和Adleman?設計了一種算法,可以實現非對稱加密。這種算法用他們三個人的名字命名,叫做RSA,RSA加密算法,是一種非對稱加密算法,在公開密鑰加密和電子商業活動中被廣泛應用。
因數分解決定了RSA算法的可靠性,到目前為止,世界上還沒有任何可靠的攻擊RSA算法的方式,只有短的RSA鑰匙才可能被強力方式解破。長度超過768位的密鑰,還無法破解(至少沒人公開宣布)。因此可以認為,1024位的RSA密鑰基本安全,2048位的密鑰極其安全。同時RSA算法也是素數的經典運用。
因素分解:一個整數分解成多個約數(因數),根據算術基本定理結果是唯一的。如:12=2*3*2;
素數:又稱質數,在大于1的自然數中,除了1和它本身以外不再有其他因數,質數的個數是無窮的;
互質:互質是公約數只有1的兩個整數,叫做互質整數。公約數只有1的兩個自然數,叫做互質自然數,后者是前者的特殊情形
擴展歐幾里得算法:是用來在已知a, b求解一組x,y,使它們滿足貝祖等式: ax+by = gcd(a, b) =d(解一定存在,根據數論中的相關定理)。擴展歐幾里德常用在求解模線性方程及方程組中。
乘法逆元:是指數學領域群G中任意一個元素a,都在G中有唯一的逆元a‘,具有性質a×a'=a'×a=e,其中e為該群的單位元。
RSA算法原理
生成公鑰和私鑰步驟。
1)選擇相異素數P、Q,并得到乘積N ,既「N=P*Q」。
2)將P、Q各減1,再互乘,得到數值,既「
=(P-1)(Q-1)」。
3)選擇整數E為密鑰,使E和互質,且E小于。
4)根據公式DE mod =1,計算出D的值 ,作為另外一個密鑰
5)通過以上步驟計算出,N,E,D3個數,N、E為公鑰,N、D為私鑰。
簡單實例
P=3 ?Q=11
N=P*Q
????N=33
=(P-1)(Q-1)=2*10=20
E=7(7<8)
DE mod =1
D*7=1(mod 20)
D=3
公鑰(33,7), 私鑰(33,3)
公鑰加密
明文 :M=5
加密:C=()mod 33=14
密文 :C=14
私鑰解密
密文:C=14
解密 :M=()mod 33
M=5
參考:「百度文庫」、「RSA算法詳解」、「幾何原本」「程序員的數學思維修煉」、「RSA算法原理阮一峰」