RSA演算法應用及證明
最近在搞hadoop,因為它用到了ssh,上網查了查,順便把ssh所用到的RSA演算法看了看,覺得很不錯,寫下來梳理一下,也算作備忘。
RSA定理
若P和Q是兩個相異質數(即都為質數且最大公約數為1),另有正整數e和d,其中d的值與( P - 1 )( Q - 1 )的值互質(即最大公約數為1),並使得( ed ) mod ( P - 1 )( Q - 1 ) = 1。有正整數A,且A < PQ,設C = A^e mod PQ,B = C^d mod PQ則有:A = B。
應用:公鑰-私鑰機制
公鑰為一個整數對(N, e);私鑰也是整數對(N, d)。
例:P=101,Q=113,則N=11413,e=3533,d=6597。
滿足RSA定理的各個關係:gcd[d, (P-1)*(Q-1)] = gcd(6597, 100*112) = gcd(6597, 11200) = 1;
(ed)mod[(P-1)(Q-1)] = (3533*6597)mod(100*112) = 23307201 mod 11200 = 1;
那麼,我們就有了公鑰(11413, 3533),和私鑰(11413, 6597)。
可以由RSA定理得知:對於任何小於11413的正整數a,都有:(a^3533)mod 11413 = c, (c^6597)mod 11413 = a。
比如:a=9726時,(9726^3533)mod 11413 = 5761 = c;(5791^6597)mod 11413 = 9726 = a。
這樣的話,規定郵件接收者擁有公鑰(11413, 3533)和私鑰(11413, 6597),公鑰可以公開給任何人,而私鑰由此人保管,不洩漏給任何人。
當傳送者要向接收者傳送一封郵件,內容是9726時,他向接收者申請,讓接收者把他的公鑰(11413, 3533)發給傳送者,傳送者做了運算(9726^3533)mod 11413 = 5761,將內容9726加密成為5761,傳送給接收者。
因為只有私鑰可以解密這一郵件,而且無法從公鑰推匯出私鑰的內容,所以即使其他人知道公鑰是(11413, 3533),電文是5761,仍然無法知道內容是什麼。
在接收者收到5761後,做運算(5791^6597)mod 11413 = 9726,即還原出原文內容,達到保密的目的。
下面是RSA定理的證明,出自http://blog.csdn.net/fireseed/archive/2005/03/23/327444.aspx,作者很強大,這裡謝謝了。
RSA定理
若P和Q是兩個相異質數,另有正整數R和M,其中M的值與( P - 1 )( Q - 1 )的值互質,並使得( RM ) mod ( P - 1 )( Q - 1 ) = 1。有正整數A,且A < PQ,設C = AR mod PQ,B = CM mod PQ則有:A = B
證明:
將C = AR mod PQ代入B = CM mod PQ得:
B = ( ( AR mod PQ )M ) mod PQ
根據積模分解公式,可變形為:
B = ( AR )M mod PQ
B = ARM mod PQ (1)
因為有( RM ) mod ( P - 1 )( Q - 1 ) = 1,所以有:
RM = K ( P - 1 )( Q - 1 ) + 1,K為正整數。
代入(1)得:
B = AK ( P - 1 )( Q - 1 ) + 1 mod PQ (2)
如果ARM < PQ時,明顯有B = A。
如果ARM > PQ,且A不是P的倍數也不是Q的倍數時,(2)可變形為:
B = ( AAK ( P - 1 )( Q - 1 ) ) mod PQ
根據積模分解公式可變形為:
B = ( ( A mod PQ )( AK ( P - 1 )( Q - 1 ) mod PQ ) ) mod PQ (3)
根據定理三的逆定理:
AK ( P - 1 )( Q - 1 ) mod PQ = ( AK ( P - 1 ) ) ( Q - 1 ) mod Q
根據費馬小定理可得:
( AK ( P - 1 ) ) ( Q - 1 ) mod Q = 1,則
AK ( P - 1 )( Q - 1 ) mod PQ = 1
故( 3 )可轉化為:
B = ( A mod PQ ) mod PQ
因為A < PQ,所以B = A成立。
在述證明過程中可以總結一點:
當P為素數且A和P互質時,那麼當N為任意自然數時都有AN( P - 1 ) mod P = 1成立,這個定理下面還要用到,我們稱之為定理四。
如果ARM > PQ,且A不是P的倍數而是Q的倍數時,A可表示為A = NQ,N為一小於A的整數。
那麼(2)式可變形為:
B = ( NQ )K ( P - 1 )( Q - 1 ) + 1 mod PQ
B = ( NK ( P - 1 )( Q - 1 ) + 1 )( QK ( P - 1 )( Q - 1 ) + 1 ) mod PQ
把Q作為公因子提出來,得:
B = ( ( NNK ( P - 1 )( Q - 1 ) ) ( QK ( P - 1 )( Q - 1 ) mod P ) ) Q
用積模分解公式進行分解,得:
B = ( ( NNK ( P - 1 )( Q - 1 ) mod P )( QK ( P - 1 )( Q - 1 ) mod P ) mod P ) Q
跟據定理四,NK ( P - 1 )( Q - 1 )和QK ( P - 1 )( Q - 1 )的值都為1,所以有:
B = ( ( ( N mod P ) mod P ) mod P ) Q
B = NQ mod PQ mod PQ mod PQ
B = A mod PQ mod PQ mod PQ
因為A < PQ,所以B = A成立
同理,當A是P的倍數而不是Q的倍數時,B = A也成立。
又因為A小於PQ,而P和Q又都是質數,所以A既是P的倍數又是Q的倍數的情況不存在。
RSA定理成立。
相關文章
- RSA演算法原理——(3)RSA加解密過程及公式論證演算法解密公式
- Google 應用內購 (1): 申請身份證明Go
- 零知識證明的最新發展和應用
- 歸約證明在密碼學中的應用密碼學
- RSA演算法演算法
- [數學趣味001]RSA演算法原理及示例演算法
- RSA加密演算法加密演算法
- RSA演算法原理演算法
- RSA演算法(一)演算法
- 零知識證明在隱私保護和身份驗證中的應用
- 例項證明SOA應用正成為一種趨勢
- 04EM演算法-EM演算法收斂證明演算法
- MD5演算法的應用及原理演算法
- 決策樹演算法介紹及應用演算法
- 第四篇:非對稱加密及RSA加密演算法加密演算法
- RSA演算法簡介演算法
- RSA演算法詳解演算法
- RSA演算法原理(二)演算法
- RSA演算法原理(一)演算法
- [轉載]RSA演算法演算法
- 身份證識別應用場景及功能特點
- jquery datatables各引數詳細說明及簡單應用jQuery
- ICML亮點論文:隨機優化演算法的證明以及在架構搜尋上的應用隨機優化演算法架構
- Windows phone應用開發[19]-RSA資料加密Windows加密
- 用Rolle中值定理證明Lagrange中值定理
- IIS 網站應用程式與虛擬目錄的區別及高階應用說明網站
- KPM演算法求字串的最小週期證明演算法字串
- 非對稱演算法----RSA演算法演算法
- RSA演算法之學習演算法
- # RSA 公鑰加密演算法加密演算法
- RSA演算法,自己的理解!演算法
- JavaScript逆向之RSA演算法JavaScript演算法
- mac 上使用OpenSSL 生成RSA證書Mac
- Redis應用配置項說明Redis
- 區塊鏈共識演算法(3)PoS權益證明演算法區塊鏈演算法
- 非對稱加密演算法-RSA演算法加密演算法
- RSA創新沙盒盤點|Cado Security——雲原生取證和響應
- RSA演算法基礎->實踐演算法