rsa演算法是第乙個能同時用於加密和數字簽名的演算法,也易於理解和操作。 rsa也是被研究得最廣泛的公鑰演算法,從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。
rsa的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯rsa的難度與大數分解難度等價,即rsa的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人士傾向於因子分解不是npc問題。
rsa的缺點主要有:
(一) 產生金鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。
(二) 分組長度太大,為保證安全性,n 至少也要 600 bits以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;且隨著大數分解技術的發展,這個長度還在增加,不利於資料格式的標準化。
但rsa的缺點對軟體註冊碼而言都不是問題,因為軟體序號產生器可以選擇乙個已知的素數來生成公鑰和私鑰。至於運算代價很高的問題而言也不是問題,因為註冊憑證資訊量是很小的。
rsa理論的數學基礎是數論中的尤拉定理,基本原理如下:
(一) 取兩個相近的大素數p、q;
(二) 計算n=p*q,z=(p-1)*(q-1);
(三) 任取乙個與z互素的整數e;
(四) 計算滿足e*d=1 mod z 的整數d;
(五) 將明文m分成字元塊s加密,每個塊s小於n。
(六) 加密:c=m^e mod n;解密:m=c^d mod n
(七) (n,e)和(n,d)分別稱為「公開金鑰」和「秘密金鑰」。根據euler定理可得:m=c^d mod n=(m^e mod n)^d mod n=m;
舉例說明:
(一) 取兩個素數p=11和q=13
(二) 計算n=p*q=11*13=143,z=(p-1)*(q-1)=(11-1)*(13-1)=120;
(三) 選取與z=120互素的整數e,如e=7,現可計算出滿足7*d=1 mod 120的整數d=103,即:7*103=1 mod 120、7*103/120餘1,
(五) 得出公鑰 (n,e)=(143,7)和私鑰 (n,d)=(143,103)
以資料加密為例:
(一) 甲向乙傳送機密資料資訊m=85,並已知乙的公鑰(n,e)=(143,7),於是可計算得出:c=m^e mod n=85^7 mod 143=123,甲將c傳送至乙;
(二) 乙利用私鑰(n,d)=(143,103)對c進行計算:m=c^d mod n=123^103 mod 143=85,現乙已經得到甲向其要傳送的機密資料資訊,而甲向乙傳送資訊時,甲所擁有的僅僅是乙的公鑰;
由此可知,由(n,e)加密的資料只能用(n,d)解密,反之亦然,從而證明rsa加密演算法是可逆的,但rsa的可逆是基於特定的數值對(即稱為公鑰和私鑰)。
另外,rsa演算法的安全性依賴於大數分解,公鑰和私鑰都是兩個大素數(大於100個十進位制位)的函式。從理論上講,從乙個金鑰和密文推斷出明文的難度等同於分解兩個大素數的積,因此,只要選擇足夠大的素數、保證公鑰或私鑰的安全,則採用常規的破解難度是非常大的,基本上可以認定為不可能破解,由此可以認定rsa是安全的。
c 實現rsa演算法 RSA演算法實現過程
rsa演算法是實現非對稱加密的一種演算法,其用到很多有關數論的內容,在此我們不多討論。而將目光聚焦於演算法的實現過程。rsa過程 第二步 計算n a b 61 53 3233 第三步 計算 a 1 b 1 60 52 3120 第四步 選擇與3120互質的乙個數e 17,這個e也就是我們的公鑰,需要...
RSA演算法簡介
rsa演算法簡介 1 簡介 當前最著名 應用最廣泛的公鑰系統rsa是在1978年,由美國麻省理工學院 mit 的rivest shamir和adleman在題為 獲得數字簽名和公開鑰密碼系統的方法 的 中提出的。它是乙個基於數論的非對稱 公開鑰 密碼體制,是一種分組密碼體制。其名稱來自於三個發明者的...
RSA演算法簡介
rsa演算法是 r rirest asllalnlr和l adleman於1977年在美國麻省理工學院開發,於1978年首次公布,其演算法如下 a 選擇兩質數p q。b 計算n p q。c 計算n的尤拉函式 n p 1 q 1 d 選擇整數e,使e與 n 互質,且1 利用rsa加密,首先需將明文數位...