應用rsa演算法
❶ 如何使用rsa演算法實現數字簽名
什麼是RSA? RSA是一種非對稱加密演算法,用它可以產生公私鑰對,就是一個公鑰和一個私鑰。
什麼是數字簽名? 數字簽名就是 用私鑰對數據進行加密。
有了RSA產生的私鑰,然後再用RSA加密演算法時行加密,才能產生數字簽名。
明白?
當然,除了RSA,還有ECC等好多其它非對稱演算法。
❷ rsa加密原理 RSA加密演算法原理是什麼
1、首先要使用概率演算法來驗證隨機產生的大的整數是否是質數,這樣的演算法比較快而且可以消除掉大多數非質數。假如有一個數通過了這個測試的話,那麼要使用一個精確的測試來保證它的確是一個質數。
2、除此之外這樣找到的p和q還要滿足一定的要求,首先它們不能太靠近,此外p-1或q-1的因子不能太小,否則的話N也可以被很快地分解。
3、此外尋找質數的演算法不能給攻擊者任何信息,這些質數是怎樣找到的,尤其產生隨機數的軟體必須非常好。要求是隨機和不可預測。這兩個要求並不相同。一個隨機過程可能可以產生一個不相關的數的系列,但假如有人能夠預測出(或部分地預測出)這個系列的話,那麼它就已經不可靠了。比如有一些非常好的隨機數演算法,但它們都已經被發表,因此它們不能被使用,因為假如一個攻擊者可以猜出p和q一半的位的話,那麼他們就已經可以輕而易舉地推算出另一半。
4、此外密鑰d必須足夠大,1990年有人證明假如p大於q而小於2q(這是一個很經常的情況)而d<n^(1 n的某一個漸進分數的分母(這個演算法的原理是利用n="pq來逼近phi:=(p-1)(q-1),而演算法要求d*e除以phi的余數是1,所以de=kphi+1,e/phi=k/d+1/phi,這說明了e/phi與k/d近似相等,從而可以通過e/N的漸進分數來尋找d(當然更多的,我們也可以更好地估計phi來獲得一個更好的估計,但對通常情況(e=65537),RSA演算法仍然是安全的))。
5、最後,RSA的原理保證了d和e必須與(p-1)(q-1)的因子互素,因此d,e都不可能為
❸ rsa加密演算法
rsa加密演算法如下:
演算法原理:
RSA公開密鑰密碼體制的原理是:根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰
❹ rsa演算法原理
RSA演算法是最常用的非對稱加密演算法,它既能用於加密,也能用於數字簽名。RSA的安全基於大數分解的難度。其公鑰和私鑰是一對大素數(100到200位十進制數或更大)的函數。從一個公鑰和密文恢復出明文的難度,等價於分解兩個大素數之積。
我們可以通過一個簡單的例子來理解RSA的工作原理。為了便於計算。在以下實例中只選取小數值的素數p,q,以及e,假設用戶A需要將明文「key」通過RSA加密後傳遞給用戶B,過程如下:設計公私密鑰(e,n)和(d,n)。
令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3與20互質)則e×d≡1 mod f(n),即3×d≡1 mod 20。通過試算我們找到,當d=7時,e×d≡1 mod f(n)同餘等式成立。因此,可令d=7。從而我們可以設計出一對公私密鑰,加密密鑰(公鑰)為:KU =(e,n)=(3,33),解密密鑰(私鑰)為:KR =(d,n)=(7,33)。
英文數字化。將明文信息數字化,並將每塊兩個數字分組。假定明文英文字母編碼表為按字母順序排列數值。則得到分組後的key的明文信息為:11,05,25。
明文加密。用戶加密密鑰(3,33) 將數字化明文分組信息加密成密文。由C≡Me(mod n)得:
C1(密文)≡M1(明文)^e (mod n) == 11≡11^3 mod 33 ;
C2(密文)≡M2(明文)^e (mod n) == 26≡05^3 mod 33;
C3(密文)≡M3(明文)^e (mod n) == 16≡25^3 mod 33;
所以密文為11.26.16。
密文解密。用戶B收到密文,若將其解密,只需要計算,即:
M1(明文)≡C1(密文)^d (mod n) == 11≡11^7 mod 33;
M2(明文)≡C2(密文)^d (mod n) == 05≡26^7 mod 33;
M3(明文)≡C3(密文)^d (mod n) == 25≡16^7 mod 33;
轉成明文11.05.25。根據上面的編碼表將其轉換為英文,我們又得到了恢復後的原文「key」。
當然,實際運用要比這復雜得多,由於RSA演算法的公鑰私鑰的長度(模長度)要到1024位甚至2048位才能保證安全,因此,p、q、e的選取、公鑰私鑰的生成,加密解密模指數運算都有一定的計算程序,需要仰仗計算機高速完成。
❺ RSA演算法有哪些用途
RSA公鑰加密演算法是1977年由Ron
Rivest、Adi
Shamirh和LenAdleman在(美國麻省理工學院)開發的。RSA取名來自開發他們三者的名字。RSA是目前最有影響力的公鑰加密演算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數據加密標准。RSA演算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
❻ RSA演算法加密
RSA加密演算法是一種典型的非對稱加密演算法,它基於大數的因式分解數學難題,它也是應用最廣泛的非對稱加密演算法,於1978年由美國麻省理工學院(MIT)的三位學著:Ron Rivest、Adi Shamir 和 Leonard Adleman 共同提出。
它的原理較為簡單,假設有消息發送方A和消息接收方B,通過下面的幾個步驟,就可以完成消息的加密傳遞:
消息發送方A在本地構建密鑰對,公鑰和私鑰;
消息發送方A將產生的公鑰發送給消息接收方B;
B向A發送數據時,通過公鑰進行加密,A接收到數據後通過私鑰進行解密,完成一次通信;
反之,A向B發送數據時,通過私鑰對數據進行加密,B接收到數據後通過公鑰進行解密。
由於公鑰是消息發送方A暴露給消息接收方B的,所以這種方式也存在一定的安全隱患,如果公鑰在數據傳輸過程中泄漏,則A通過私鑰加密的數據就可能被解密。
如果要建立更安全的加密消息傳遞模型,需要消息發送方和消息接收方各構建一套密鑰對,並分別將各自的公鑰暴露給對方,在進行消息傳遞時,A通過B的公鑰對數據加密,B接收到消息通過B的私鑰進行解密,反之,B通過A的公鑰進行加密,A接收到消息後通過A的私鑰進行解密。
當然,這種方式可能存在數據傳遞被模擬的隱患,但可以通過數字簽名等技術進行安全性的進一步提升。由於存在多次的非對稱加解密,這種方式帶來的效率問題也更加嚴重。
❼ 理解RSA演算法
如果公鑰加密的信息只有私鑰解得開,只要私鑰不泄露,通信就是安全的.
歐拉函數 ,在數論中,對正整數n,歐拉函數φ(n)是小於或等於n的正整數中與n互質的數的數目.例如:φ(8) = 4,因為1,3,5,7均與8互質.
通式:
如果n=1,則 φ(1) = 1 。因為1與任何數(包括自身)都構成互質關系。
如果n是質數,則 φ(n)=n-1 。因為質數與小於它的每一個數,都構成互質關系。比如5與1、2、3、4都構成互質關系。
如果n是質數的某一個次方,即 n = p^k (p為質數,k為大於等於1的整數),則
如果n可以分解成兩個互質的整數之積
n = p1 × p2 則 φ(n) = φ(p1p2) = φ(p1)φ(p2)
如果兩個正整數a和n互質,則n的歐拉函數 φ(n) 可以讓下面的等式成立:
如果兩個正整數a和n互質,那麼一定可以找到整數b,使得 ab-1 被n整除,或者說ab被n除的余數是1。
這時,b就叫做a的"模反元素"。
比如,3和11互質,那麼3的模反元素就是4,因為 (3 × 4)-1 可以被11整除。顯然,模反元素不止一個, 4加減11的整數倍都是3的模反元素 {...,-18,-7,4,15,26,...},即如果b是a的模反元素,則 b+kn 都是a的模反元素。
比如,老張和老王是兩名地下工作者,老張要向老王傳達一個機密的文件.這時老張想到了RSA演算法.
(1) 隨機選擇兩個不相等的質數p,q.
這時,老張選擇了61和53.
(2) 計算p和q的乘積n.
n的長度就是密鑰長度。3233寫成二進制是110010100001,一共有12位,所以這個密鑰就是12位。實際應用中,RSA密鑰一般是1024位,重要場合則為2048位。
(3) 計算n的歐拉函數φ(n).
根據上面所介紹的歐拉定理第四種情況:
(4) 隨機選擇一個整數e,條件是1< e < φ(n),且e與φ(n) 互質.
這時,老張從1-3120之間,隨機選擇了17.(實際應用中,常常選擇65537).
(5) 計算e對於φ(n)的模反元素d
所謂"模反元素"就是指有一個整數d,可以使得ed被φ(n)除的余數為1。
這個公式等價於
於是,找到模反元素d,實質上就是對下面這個二元一次方程求解。
那麼,已知e = 17,φ(n) = 3120 ,求x的值
這個方程可以用"擴展歐幾里得演算法"求解,此處省略具體過程。總之,老張算出一組整數解為 (x,y)=(2753,15),即 d=2753。
(6) 將n和e封裝成公鑰,n和d封裝成私鑰
n=3233,e=17,d=2753,所以公鑰就是 (3233,17),私鑰就是(3233, 2753),即公鑰為( n,e ),私鑰為( n,d )。
實際應用中,公鑰和私鑰的數據都採用 ASN.1 格式表達。
老張進行了這些計算後,整理了下上面所提到的數字:
這六個數字之中,公鑰用到了兩個(n和e),其餘四個數字都是不公開的。其中最關鍵的是d,因為n和d組成了私鑰,一旦d泄漏,就等於私鑰泄漏。
老張想,有沒有可能在已知n和e的情況下,也就是知道公鑰的情況下,推導出d?
結論:如果n可以被因數分解,d就可以算出,也就意味著私鑰被破解。可是,大整數的因數分解,是一件非常困難的事情.
有了公鑰和密鑰,就能進行加密和解密了。
1.加密要用公鑰 (n,e)
假設老張要向老王發送加密信息m,他就要用老王的公鑰 (n,e) 對m進行加密。這里需要注意,m必須是整數(字元串可以取ascii值或unicode值),且m必須小於n。
所謂"加密",就是算出下式的c:
老王的公鑰是 (3233, 17),老張的m假設是65,那麼可以算出下面的等式:
於是,c等於2790,老張就把2790發給了老王。
2.解密要用私鑰(n,d)
老王拿到老張發來的2790以後,就用自己的私鑰(3233, 2753) 進行解密。可以證明,下面的等式一定成立:(證明過程略,有興趣可以看阮一峰的博客)
也就是說,c的d次方除以n的余數為m。現在,c等於2790,私鑰是(3233, 2753),那麼,老王算出
因此,老王知道了老張加密前的原文就是65。
我們可以看到,如果不知道d,就沒有辦法從c求出m。而前面已經說過,要知道d就必須分解n,這是極難做到的,所以RSA演算法保證了通信安全。
你可能會問,公鑰(n,e) 只能加密小於n的整數m,那麼如果要加密大於n的整數,該怎麼辦?有兩種解決方法:一種是把長信息分割成若干段短消息,每段分別加密;另一種是先選擇一種"對稱性加密演算法"(比如DES),用這種演算法的密鑰加密信息,再用RSA公鑰加密DES密鑰。
❽ 以rsa為代表的公鑰密碼演算法的主要用途有哪些
RSA公鑰密碼
RSA公鑰密碼是1977年由Ron Rivest、Adi Shamirh和LenAdleman在MIT(美國麻省理工學院〉開發的,1978年首次公布[RIVE78]。它是目前最有影響的公鑰加密演算法,它能夠抵抗到目前為止已知的所有密碼攻擊。目前它已被ISO推薦為公鑰數據加密標准。RSA演算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但是想分解它們的乘積卻極端困難,因此可以將乘積公開作為加密密鑰。
RSA的演算法結構相當簡單,整個演算法可以描述如下:
(1)選取兩個大素數p和q(保密);
(2)計算n=pq(公開),γ=(p一1〉(q-1)(保密);
(3)隨機選取整數e(公開,加密密鑰),使得ed(ear)=1
(4)計算d(保密,私人密鑰),使得ed≡1(mod r),即d=e-1(mod r);
(5)加密:c=me mod n
(6)解密:m=cd mod n。
利用RSA對被加密的信息m (長度小於log2n的整數)進行加密得到相應的密文c=me mod n;解密演算法則是計算m=cd modn RSA的優點是不需要密鑰分配,但缺點是速度慢。RSA公鑰密碼 RSA 公鑰 密碼
❾ RSA演算法解析
要應用rsa密碼,應當採用足夠大的整數n. 一般加密密鑰和認證密鑰選n為1024位,而平台根密鑰和存儲根密鑰則選n為2048位.
e 的二進製表示中應該盡量含有少的1.
e=3是不安全的,因為e太小,對於小的明文M,則有C=M的e次方<n,加密運算未取模.直接對密文C開e次方,即可求出明文M.
現在普遍使用e=2的16次方+1 = 65537 , 二進製表示中只有兩個1,且安全.
❿ RSA和DES演算法的優缺點、比較
DES演算法:
優點:密鑰較短,加密處理簡單,加解密速度快,適用於加密大量數據的場合。
缺點:密鑰單一,不能由其中一個密鑰推導出另一個密鑰。
RSA演算法:
優點:應用廣泛,加密密鑰和解密密鑰不一樣,一般加密密鑰稱為私鑰。解密密鑰稱為公鑰,私鑰加密後只能用公鑰解密,,當然也可以用公鑰加密,用私鑰解密。
缺點:密鑰尺寸大,加解密速度慢,一般用來加密少量數據,比如DES的密鑰。
(10)應用rsa演算法擴展閱讀:
安全性
RSA的安全性依賴於大數分解,但是否等同於大數分解一直未能得到理論上的證明,因為沒有證明破解RSA就一定需要作大數分解。假設存在一種無須分解大數的演算法,那它肯定可以修改成為大數分解演算法。RSA 的一些變種演算法已被證明等價於大數分解。
不管怎樣,分解n是最顯然的攻擊方法。人們已能分解多個十進制位的大素數。因此,模數n必須選大一些,因具體適用情況而定。