當前位置:首頁 » 密碼管理 » 加密解密密鑰

加密解密密鑰

發布時間: 2024-06-21 18:24:29

❶ 璇瘋В閲婂垵濮嬪瘑閽ャ佷細璇濆瘑閽ャ佸瘑閽ュ姞瀵嗗瘑閽ャ佷富瀵嗛掗鏄濡備綍閰嶅悎瀹炵幇淇濆瘑閫氫俊鐨勶紵

鍦ㄤ繚瀵嗛氫俊涓錛屽垵濮嬪瘑閽ャ佷細璇濆瘑閽ャ佸瘑閽ュ姞瀵嗗瘑閽ュ拰涓誨瘑閽ユ槸鐢ㄤ簬瀹炵幇鍔犲瘑鍜岃В瀵嗙殑鍏抽敭瑕佺礌銆備互涓嬫槸瀹冧滑鐨勪綔鐢ㄥ拰濡備綍鍗忓悓宸ヤ綔鐨勮В閲婏細
1. 鍒濆嬪瘑閽ワ紙Initial Key錛夛細鍒濆嬪瘑閽ユ槸鍔犲瘑緋葷粺鐨勮搗鐐廣傚畠鏄涓涓闅忔満鐢熸垚鐨勫瘑閽ワ紝鐢ㄤ簬鍒濆嬪寲鍔犲瘑綆楁硶銆傞氬父鎯呭喌涓嬶紝鍒濆嬪瘑閽ュ彧鍦ㄧ郴緇熻劇疆鎴栭氫俊鍙屾柟寤虹珛鍒濆嬭繛鎺ユ椂浣跨敤錛岃屼笉鐢ㄤ簬瀹為檯鐨勫姞瀵嗛氫俊榪囩▼銆傚垵濮嬪瘑閽ラ氬父鐢卞弻鏂逛簨鍏堢害瀹氬苟瀹夊叏鍦頒氦鎹銆
2. 浼氳瘽瀵嗛掗錛圫ession Key錛夛細浼氳瘽瀵嗛掗鏄鍦ㄩ氫俊浼氳瘽鏈熼棿鐢熸垚鐨勪復鏃跺瘑閽ャ傚畠鐢ㄤ簬鍔犲瘑鍜岃В瀵嗗疄闄呯殑閫氫俊鏁版嵁銆備細璇濆瘑閽ラ氬父鏄浣跨敤瀵嗛掗鍗忓晢鍗忚錛堝侱iffie-Hellman錛夊湪閫氫俊鍙屾柟涔嬮棿鍗忓晢鐢熸垚鐨勩傝ュ崗璁鍏佽擱氫俊鍙屾柟鍦ㄤ笉鐩存帴浼犺緭浼氳瘽瀵嗛掗鐨勬儏鍐典笅錛岄氳繃鍏寮鐨勯氶亾瀹夊叏鍦扮敓鎴愬叡浜鐨勪細璇濆瘑閽ャ傜敓鎴愮殑浼氳瘽瀵嗛掗鍦ㄩ氫俊榪囩▼涓鐢ㄤ簬鍔犲瘑鍜岃В瀵嗘暟鎹錛岄氫俊緇撴潫鍚庨氬父浼氳涓㈠純銆
3. 瀵嗛掗鍔犲瘑瀵嗛掗錛圞ey Encryption Key錛夛細瀵嗛掗鍔犲瘑瀵嗛掗鏄鐢ㄤ簬鍔犲瘑鍜岃В瀵嗕細璇濆瘑閽ョ殑瀵嗛掗銆傚湪閫氫俊鍙屾柟榪涜屼細璇濆瘑閽ュ崗鍟嗘椂錛屼負浜嗙『淇濅細璇濆瘑閽ョ殑瀹夊叏浼犺緭錛岄氬父浣跨敤瀵嗛掗鍔犲瘑瀵嗛掗瀵逛細璇濆瘑閽ヨ繘琛屽姞瀵嗐傚瘑閽ュ姞瀵嗗瘑閽ユ槸鎻愬墠綰﹀畾濂藉苟淇濆瓨鍦ㄩ氫俊鍙屾柟涔嬮棿鐨勶紝鐢ㄤ簬鍔犲瘑鍜岃В瀵嗕細璇濆瘑閽ョ殑榪囩▼銆
4. 涓誨瘑閽ワ紙Master Key錛夛細涓誨瘑閽ユ槸鐢ㄤ簬鐢熸垚鍜岀$悊浼氳瘽瀵嗛掗鍜屽瘑閽ュ姞瀵嗗瘑閽ョ殑閲嶈佸瘑閽ャ備富瀵嗛掗閫氬父鏄鍦ㄧ郴緇熻劇疆鎴栭氫俊鍙屾柟寤虹珛鍒濆嬭繛鎺ユ椂鐢熸垚鐨勶紝騫剁敱瀹夊叏鐨勫瘑閽ョ$悊鏈烘瀯榪涜岀$悊銆備富瀵嗛掗鐢ㄤ簬鐢熸垚浼氳瘽瀵嗛掗鍜屽瘑閽ュ姞瀵嗗瘑閽ワ紝騫剁『淇濊繖浜涘瘑閽ョ殑瀹夊叏鎬с備富瀵嗛掗閫氬父鏄鏇撮暱銆佹洿澶嶆潅鐨勫瘑閽ワ紝鐢ㄤ簬淇濇姢閫氫俊緋葷粺鐨勫畨鍏ㄣ
鍦ㄤ繚瀵嗛氫俊涓錛屽垵濮嬪瘑閽ュ拰涓誨瘑閽ョ敤浜庡緩絝嬪畨鍏ㄧ殑鍒濆嬭繛鎺ュ苟紜淇濈郴緇熺殑鏁翠綋瀹夊叏鎬с傞氳繃浣跨敤涓誨瘑閽ョ敓鎴愬拰綆$悊浼氳瘽瀵嗛掗鍜屽瘑閽ュ姞瀵嗗瘑閽ワ紝紜淇濅簡閫氫俊榪囩▼涓鐨勪復鏃跺瘑閽ョ殑瀹夊叏鎬у拰闅忔満鎬с備細璇濆瘑閽ョ敤浜庡姞瀵嗗拰瑙e瘑瀹為檯鐨勯氫俊鏁版嵁錛岃屽瘑閽ュ姞瀵嗗瘑閽ョ敤浜庡畨鍏ㄥ湴浼犺緭浼氳瘽瀵嗛掗銆傝繖鏍鳳紝閫氳繃鍗忓悓宸ヤ綔錛屽垵濮嬪瘑閽ャ佷細璇濆瘑閽ャ佸瘑閽ュ姞瀵嗗瘑閽ュ拰涓誨瘑閽ュ叡鍚屽疄鐜頒簡淇濆瘑閫氫俊鐨勭洰鏍囥

❷ 鍔犲瘑綆楁硶鐨勫瘑閽ユ槸浠涔

瀵嗛掗鏄涓縐嶅弬鏁幫紝瀹冩槸鍦ㄦ槑鏂囪漿鎹涓哄瘑鏂囨垨灝嗗瘑鏂囪漿鎹涓烘槑鏂囩殑綆楁硶涓杈撳叆鐨勫弬鏁幫紝澶氱敤浜庣綉緇滀腑錛岀敤鏉ヤ繚鎶や釜浜洪殣縐佺瓑闂棰橈紝緇存姢緗戠粶浣跨敤瀹夊叏銆備竴鑸鏉ヨ村瘑閽ュ姞瀵嗙殑鏂規硶鏈変笁縐嶇被鍨嬶細瀵圭О鍔犲瘑銆侀潪瀵圭О鍔犲瘑鍜孒ash鍔犲瘑銆

涓銆佸圭О鍔犲瘑

鍙浣跨敤浜嗕竴涓瀵嗛掗榪涜屽姞瀵嗚В瀵嗭紝涔熷彲浠ュ彨鍋氬崟瀵嗛掗鍔犲瘑銆傚畠瀵瑰瘑閽ユ湰韜娌℃湁鐗規畩鐨勮佹眰錛岄氫俊鍙屾柟鍙瑕佹湁涓涓鐩稿悓鐨勫瘑閽ュ氨琛岋紝涓涓鐢ㄦ埛鎶婅嚜宸遍渶瑕佸彂閫佺殑鏁版嵁閫氳繃瀵嗛掗鍔犲瘑鎴愭販涔辯殑淇℃伅錛屾帴鍙楁柟浣跨敤鐩稿悓鐨勫瘑閽ユ妸鎺ュ彈鍒扮殑淇℃伅榪樺師鎴愬師濮嬫暟鎹錛岃繖涓鏂規硶鍙浠ュ湪鏋佺煭鐨勬椂闂村唴瀵瑰ぇ閲忎俊鎮榪涜屽姞瀵嗚В瀵嗐備絾鏄濡傛灉瀵嗛掗鍦ㄤ紶杈撹繃紼嬩腑灝辮鎴鑾鳳紝閭d箞浠ュ悗鐨勫姞瀵嗚繃紼嬪氨褰㈠悓鉶氳俱傝繖涓鏂規硶鐨勪紭鐐規槸浣跨敤鍚屼竴涓瀵嗛掗鑺傜渷浜嗗姞瀵嗚В瀵嗘墍闇鐨勬椂闂達紝浣嗘槸鏃犳硶淇濊瘉瀵嗛掗鐨勫畨鍏ㄦс

浜屻侀潪瀵圭О鍔犲瘑

鍦ㄥ姞瀵嗗拰瑙e瘑涓浣跨敤浜嗕竴瀵瑰瘑閽ワ紝涓涓鏄鍏鐢ㄥ瘑閽ワ紝瀹冨瑰栧叕寮鍙戝竷錛屽彟涓涓鏄縐佹湁瀵嗛掗錛岀敱鐢ㄦ埛鑷宸變繚瀛樸備粠鐞嗚轟笂璁詫紝榪欑嶅姞瀵嗘柟寮忓彧瑕佹槸鐢ㄦ埛鐨勭佹湁瀵嗛掗娌℃湁涓㈠け鎴栬呰紿冿紝閭d箞浠栦滑涔嬮棿鍔犲瘑鐨勪俊鎮鏄緇濆逛笉浼氳鐮磋В鐨勩備絾鏄瀹冪殑緙虹偣涔熼潪甯告槑鏄撅紝灝辨槸鍔犲瘑閫熷害闈炲父緙撴參銆傜敱浜庤佽繘琛屽ぇ閲忕殑鏁板﹁繍綆楋紝鍗充嬌鍔犲瘑灝戦噺鐨勪俊鎮涔熼渶瑕佽姳璐瑰ぇ閲忕殑鏃墮棿銆

涓夈丠ash鍔犲瘑

鏄閫氳繃鏁板﹁繍綆楋紝鎶婁笉鍚岄暱搴︾殑淇℃伅杞鍖栧埌128浣嶇紪鐮佷腑錛屽艦鎴怘ash鍊礆紝閫氳繃姣旇緝榪欎釜鏁板兼槸鍚︽g『錛屾潵紜瀹氶氫俊鍙屾柟鐨勫悎娉曟с傝繖涔熷彲浠ヨ存槸鏁板瓧絳懼悕錛屽湪鏁版嵁浼犺緭鍚庯紝鍙浠ラ氳繃姣旇緝Hash鍊兼潵鍒ゆ柇淇℃伅閫斾腑鏄鍚﹁鎴鑾蜂慨鏀癸紝鏄鍚︾敱鍚堟硶鐨勫彂閫佷漢鍙戦佹垨鑰呭悎娉曠殑鎺ユ敹浜烘帴鏀剁瓑銆傜敤榪欑嶆柟娉曪紝鍙浠ラ槻姝㈠瘑閽ヤ涪澶辯殑闂棰橈紝鍏鋒湁涓嶅彲鎶佃禆鎬с傚緢閫傜敤浜庡晢涓氫俊鎮鐨勪紶閫掋

加密密鑰可不可以解密

數字簽名是用用私鑰加密,用公鑰解密。一般的傳輸加密時公鑰加密,私鑰解密。都是不對稱加密演算法

以下是找的關於數字簽名的一些資料:
對文件進行加密只解決了傳送信息的保密問題,而防止他人對傳輸的文件進行破壞,以及如何確定發信人的身份還需要採取其它的手段,這一手段就是數字簽名。在電子商務安全保密系統中,數字簽名技術有著特別重要的地位,在電子商務安全服務中的源鑒別、完整性服務、不可否認服務中,都要用到數字簽名技術。在電子商務中,完善的數字簽名應具備簽字方不能抵賴、他人不能偽造、在公證人面前能夠驗證真偽的能力。

實現數字簽名有很多方法,目前數字簽名採用較多的是公鑰加密技術,如基於RSA Date Security 公司的PKCS(Public Key Cryptography Standards)、Digital Signature Algorithm、x.509、PGP(Pretty Good Privacy)。1994年美國標准與技術協會公布了數字簽名標准而使公鑰加密技術廣泛應用。公鑰加密系統採用的是非對稱加密演算法。

目前的數字簽名是建立在公共密鑰體制基礎上,它是公用密鑰加密技術的另一類應用。它的主要方式是,報文的發送方從報文文本中生成一個128位的散列值(或報文摘要)。發送方用自己的私人密鑰對這個散列值進行加密來形成發送方的數字簽名。然後,這個數字簽名將作為報文的附件和報文一起發送給報文的接收方。報文的接收方首先從接收到的原始報文中計算出128位的散列值(或報文摘要),接著再用發送方的公用密鑰來對報文附加的數字簽名進行解密。如果兩個散列值相同、那麼接收方就能確認該數字簽名是發送方的。通過數字簽名能夠實現對原始報文的鑒別。

在書面文件上簽名是確認文件的一種手段,其作用有兩點:第一,因為自己的簽名難以否認,從而確認了文件已簽署這一事實;第二,因為簽名不易仿冒,從而確定了文件是真的這一事實。

數字簽名與書面文件簽名有相同之處,採用數字簽名,也能確認以下兩點:第一,信息是由簽名者發送的;第二,信息自簽發後到收到為止未曾作過任何修改。這樣數字簽名就可用來防止電子信息因易被修改而有人作偽,或冒用別人名義發送信息。或發出(收到)信件後又加以否認等情況發生。

應用廣泛的數字簽名方法主要有三種,即:RSA簽名、DSS簽名和Hash簽名。這三種演算法可單獨使用,也可綜合在一起使用。數字簽名是通過密碼演算法對數據進行加、解密變換實現的,用DES算去、RSA演算法都可實現數字簽名。但三種技術或多或少都有缺陷,或者沒有成熟的標准。

用RSA或其它公開密鑰密碼演算法的最大方便是沒有密鑰分配問題(網路越復雜、網路用戶越多,其優點越明顯)。因為公開密鑰加密使用兩個不同的密鑰,其中有一個是公開的,另一個是保密的。公開密鑰可以保存在系統目錄內、未加密的電子郵件信息中、電話黃頁(商業電話)上或公告牌里,網上的任何用戶都可獲得公開密鑰。而私有密鑰是用戶專用的,由用戶本身持有,它可以對由公開密鑰加密信息進行解密。

RSA演算法中數字簽名技術實際上是通過一個哈希函數來實現的。數字簽名的特點是它代表了文件的特徵,文件如果發生改變,數字簽名的值也將發生變化。不同的文件將得到不同的數字簽名。一個最簡單的哈希函數是把文件的二進制碼相累加,取最後的若干位。哈希函數對發送數據的雙方都是公開的。

DSS數字簽名是由美國國家標准化研究院和國家安全局共同開發的。由於它是由美國政府頒布實施的,主要用於與美國政府做生意的公司,其他公司則較少使用,它只是一個簽名系統,而且美國政府不提倡使用任何削弱政府竊聽能力的加密軟體,認為這才符合美國的國家利益。

Hash簽名是最主要的數字簽名方法,也稱之為數字摘要法(Digital Digest)或數字指紋法(Digital Finger Print)。它與RSA數字簽名是單獨的簽名不同,該數字簽名方法是將數字簽名與要發送的信息緊密聯系在一起,它更適合於電子商務活動。將一個商務合同的個體內容與簽名結合在一起,比合同和簽名分開傳遞,更增加了可信度和安全性。數字摘要(Digital Digest)加密方法亦稱安全Hash編碼法(SHA:Secure Hash Algorithm)或MD5(MD Standard For Message Digest),由RonRivest所設計。該編碼法採用單向Hash函數將需加密的明文「摘要」成一串128bit的密文,這一串密文亦稱為數字指紋(Finger Print),它有固定的長度,且不同的明文摘要必定一致。這樣這串摘要使可成為驗證明文是否是「真身」的「指紋」了。

只有加入數字簽名及驗證才能真正實現在公開網路上的安全傳輸。加入數字簽名和驗證的文件傳輸過程如下:

(1)發送方首先用哈希函數從原文得到數字簽名,然後採用公開密鑰體系用發達方的私有密鑰對數字簽名進行加密,並把加密後的數字簽名附加在要發送的原文後面;

(2)發送一方選擇一個秘密密鑰對文件進行加密,並把加密後的文件通過網路傳輸到接收方;

(3)發送方用接收方的公開密鑰對密秘密鑰進行加密,並通過網路把加密後的秘密密鑰傳輸到接收方;

(4)接受方使用自己的私有密鑰對密鑰信息進行解密,得到秘密密鑰的明文;

(5)接收方用秘密密鑰對文件進行解密,得到經過加密的數字簽名;

(6)接收方用發送方的公開密鑰對數字簽名進行解密,得到數字簽名的明文;

(7)接收方用得到的明文和哈希函數重新計算數字簽名,並與解密後的數字簽名進行對比。如果兩個數字簽名是相同的,說明文件在傳輸過程中沒有被破壞。

如果第三方冒充發送方發出了一個文件,因為接收方在對數字簽名進行解密時使用的是發送方的公開密鑰,只要第三方不知道發送方的私有密鑰,解密出來的數字簽名和經過計算的數字簽名必然是不相同的。這就提供了一個安全的確認發送方身份的方法。

安全的數字簽名使接收方可以得到保證:文件確實來自聲稱的發送方。鑒於簽名私鑰只有發送方自己保存,他人無法做一樣的數字簽名,因此他不能否認他參與了交易。

數字簽名的加密解密過程和私有密鑰的加密解密過程雖然都使用公開密鑰體系,但實現的過程正好相反,使用的密鑰對也不同。數字簽名使用的是發送方的密鑰對,發送方用自己的私有密鑰進行加密,接收方用發送方的公開密鑰進行解密。這是一個一對多的關系:任何擁有發送方公開密鑰的人都可以驗證數字簽名的正確性,而私有密鑰的加密解密則使用的是接收方的密鑰對,這是多對一的關系:任何知道接收方公開密鑰的人都可以向接收方發送加密信息,只有唯一擁有接收方私有密鑰的人才能對信息解密。在實用過程中,通常一個用戶擁有兩個密鑰對,一個密鑰對用來對數字簽名進行加密解密,一個密鑰對用來對私有密鑰進行加密解密。這種方式提供了更高的安全性。

❹ rsa加密解密演算法

1978年就出現了這種演算法,它是第一個既能用於數據加密
也能用於數字簽名的演算法。它易於理解和操作,也很流行。算
法的名字以發明者的名字命名:Ron Rivest, AdiShamir 和
Leonard Adleman。但RSA的安全性一直未能得到理論上的證明。

RSA的安全性依賴於大數分解。公鑰和私鑰都是兩個大素數
( 大於 100個十進制位)的函數。據猜測,從一個密鑰和密文
推斷出明文的難度等同於分解兩個大素數的積。

密鑰對的產生:選擇兩個大素數,p 和q 。計算:
n = p * q
然後隨機選擇加密密鑰e,要求 e 和 ( p - 1 ) * ( q - 1 )
互質。最後,利用Euclid 演算法計算解密密鑰d, 滿足

e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) )

其中n和d也要互質。數e和
n是公鑰,d是私鑰。兩個素數p和q不再需要,應該丟棄,不要讓任
何人知道。 加密信息 m(二進製表示)時,首先把m分成等長數據
塊 m1 ,m2,..., mi ,塊長s,其中 2^s <= n, s 盡可能的大。對
應的密文是:

ci = mi^e ( mod n ) ( a )

解密時作如下計算:

mi = ci^d ( mod n ) ( b )

RSA 可用於數字簽名,方案是用 ( a ) 式簽名, ( b )
式驗證。具體操作時考慮到安全性和 m信息量較大等因素,一般是先
作 HASH 運算。

RSA 的安全性。
RSA的安全性依賴於大數分解,但是否等同於大數分解一直未能得到理
論上的證明,因為沒有證明破解RSA就一定需要作大數分解。假設存在
一種無須分解大數的演算法,那它肯定可以修改成為大數分解演算法。目前,
RSA的一些變種演算法已被證明等價於大數分解。不管怎樣,分解n是最顯
然的攻擊方法。現在,人們已能分解140多個十進制位的大素數。因此,
模數n必須選大一些,因具體適用情況而定。

RSA的速度:
由於進行的都是大數計算,使得RSA最快的情況也比DES慢上100倍,無論
是軟體還是硬體實現。速度一直是RSA的缺陷。一般來說只用於少量數據
加密。

RSA的選擇密文攻擊:
RSA在選擇密文攻擊面前很脆弱。一般攻擊者是將某一信息作一下偽裝
(Blind),讓擁有私鑰的實體簽署。然後,經過計算就可得到它所想要的信
息。實際上,攻擊利用的都是同一個弱點,即存在這樣一個事實:乘冪保
留了輸入的乘法結構:

( XM )^d = X^d *M^d mod n

前面已經提到,這個固有的問題來自於公鑰密碼系統的最有用的特徵
--每個人都能使用公鑰。但從演算法上無法解決這一問題,主要措施有
兩條:一條是採用好的公鑰協議,保證工作過程中實體不對其他實體
任意產生的信息解密,不對自己一無所知的信息簽名;另一條是決不
對陌生人送來的隨機文檔簽名,簽名時首先使用One-Way HashFunction
對文檔作HASH處理,或同時使用不同的簽名演算法。在中提到了幾種不
同類型的攻擊方法。

RSA的公共模數攻擊。
若系統中共有一個模數,只是不同的人擁有不同的e和d,系統將是危險
的。最普遍的情況是同一信息用不同的公鑰加密,這些公鑰共模而且互
質,那末該信息無需私鑰就可得到恢復。設P為信息明文,兩個加密密鑰
為e1和e2,公共模數是n,則:

C1 = P^e1 mod n

C2 = P^e2 mod n

密碼分析者知道n、e1、e2、C1和C2,就能得到P。

因為e1和e2互質,故用Euclidean演算法能找到r和s,滿足:

r * e1 + s * e2 = 1

假設r為負數,需再用Euclidean演算法計算C1^(-1),則

( C1^(-1) )^(-r) * C2^s = P mod n

另外,還有其它幾種利用公共模數攻擊的方法。總之,如果知道給定模數
的一對e和d,一是有利於攻擊者分解模數,一是有利於攻擊者計算出其它
成對的e』和d』,而無需分解模數。解決辦法只有一個,那就是不要共享
模數n。

RSA的小指數攻擊。 有一種提高
RSA速度的建議是使公鑰e取較小的值,這樣會使加密變得易於實現,速度
有所提高。但這樣作是不安全的,對付辦法就是e和d都取較大的值。

RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。
RSA是被研究得最廣泛的公鑰演算法,從提出到現在已近二十年,經歷了各
種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。
RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難
度與大數分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性
能如何,而且密碼學界多數人士傾向於因子分解不是NPC問題。

RSA的缺點主要有:
A)產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次
一密。B)分組長度太大,為保證安全性,n 至少也要 600 bits
以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;
且隨著大數分解技術的發展,這個長度還在增加,不利於數據格式的標准化。
目前,SET(Secure Electronic Transaction)協議中要求CA採用2048比特長
的密鑰,其他實體使用1024比特的密鑰。

❺ 簡述RSA演算法中密鑰的產生,數據加密和解密的過程,並簡單說明RSA演算法安全性的原理。

RSA演算法的數學原理

RSA演算法的數學原理:
先來找出三個數, p, q, r,

其中 p, q 是兩個相異的質數, r 是與 (p-1)(q-1) 互質的數。

p, q, r 這三個數便是 private key。接著, 找出m, 使得 rm == 1 mod (p-1)(q-1)..... 這個 m 一定存在, 因為 r 與 (p-1)(q-1) 互質, 用輾轉相除法就可以得到了..... 再來, 計算 n = pq....... m, n 這兩個數便是 public key。

編碼過程是, 若資料為 a, 將其看成是一個大整數, 假設 a < n.... 如果 a >= n 的話, 就將 a 表成 s 進位 (s <= n, 通常取 s = 2^t), 則每一位數均小於 n, 然後分段編碼...... 接下來, 計算 b == a^m mod n, (0 <= b < n), b 就是編碼後的資料...... 解碼的過程是, 計算 c == b^r mod pq (0 <= c < pq), 於是乎, 解碼完畢...... 等會會證明 c 和 a 其實是相等的 :) 如果第三者進行竊聽時, 他會得到幾個數: m, n(=pq), b...... 他如果要解碼的話, 必須想辦法得到 r...... 所以, 他必須先對 n 作質因數分解......... 要防止他分解, 最有效的方法是找兩個非常的大質數 p, q, 使第三者作因數分解時發生困難......... <定理> 若 p, q 是相異質數, rm == 1 mod (p-1)(q-1), a 是任意一個正整數, b == a^m mod pq, c == b^r mod pq, 則 c == a mod pq 證明的過程, 會用到費馬小定理, 敘述如下: m 是任一質數, n 是任一整數, 則 n^m == n mod m (換另一句話說, 如果 n 和 m 互質, 則 n^(m-1) == 1 mod m) 運用一些基本的群論的知識, 就可以很容易地證出費馬小定理的........ <證明> 因為 rm == 1 mod (p-1)(q-1), 所以 rm = k(p-1)(q-1) + 1, 其中 k 是整數 因為在 molo 中是 preserve 乘法的 (x == y mod z and u == v mod z => xu == yv mod z), 所以, c == b^r == (a^m)^r == a^(rm) == a^(k(p-1)(q-1)+1) mod pq 1. 如果 a 不是 p 的倍數, 也不是 q 的倍數時, 則 a^(p-1) == 1 mod p (費馬小定理) => a^(k(p-1)(q-1)) == 1 mod p a^(q-1) == 1 mod q (費馬小定理) => a^(k(p-1)(q-1)) == 1 mod q 所以 p, q 均能整除 a^(k(p-1)(q-1)) - 1 => pq | a^(k(p-1)(q-1)) - 1 即 a^(k(p-1)(q-1)) == 1 mod pq => c == a^(k(p-1)(q-1)+1) == a mod pq 2. 如果 a 是 p 的倍數, 但不是 q 的倍數時, 則 a^(q-1) == 1 mod q (費馬小定理) => a^(k(p-1)(q-1)) == 1 mod q => c == a^(k(p-1)(q-1)+1) == a mod q => q | c - a 因 p | a => c == a^(k(p-1)(q-1)+1) == 0 mod p => p | c - a 所以, pq | c - a => c == a mod pq 3. 如果 a 是 q 的倍數, 但不是 p 的倍數時, 證明同上 4. 如果 a 同時是 p 和 q 的倍數時, 則 pq | a => c == a^(k(p-1)(q-1)+1) == 0 mod pq => pq | c - a => c == a mod pq Q.E.D. 這個定理說明 a 經過編碼為 b 再經過解碼為 c 時, a == c mod n (n = pq).... 但我們在做編碼解碼時, 限制 0 <= a < n, 0 <= c < n, 所以這就是說 a 等於 c, 所以這個過程確實能做到編碼解碼的功能.....

熱點內容
天津一汽豐田伺服器地址 發布:2024-07-25 17:22:00 瀏覽:333
怎樣找到主機的遠程伺服器的ip 發布:2024-07-25 17:02:27 瀏覽:711
bazel編譯tensorfolw 發布:2024-07-25 16:31:35 瀏覽:19
java圖片路徑 發布:2024-07-25 15:28:52 瀏覽:439
編譯的作用是 發布:2024-07-25 15:28:51 瀏覽:158
c語言課程總結 發布:2024-07-25 15:06:39 瀏覽:897
安卓廣告怎麼賺錢 發布:2024-07-25 15:02:24 瀏覽:895
怎麼看電腦基本配置 發布:2024-07-25 14:57:54 瀏覽:954
nettyandroid 發布:2024-07-25 14:57:52 瀏覽:505
php圖片二進制字元串 發布:2024-07-25 14:55:58 瀏覽:486