⑴ 什麼是RSA演算法,求簡單解釋。
RSA公鑰加密演算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國麻省理工學院)開發的。RSA取名來自開發他們三者的名字。RSA是目前最有影響力的公鑰加密演算法,它能夠
抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數據加密標准。RSA演算法基於一個十分簡單的數論事實:將兩個大素數相乘十分容易,但那時想要對其乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。由於進行的都是大數計算,使得RSA最快的情況也比DES慢上好幾倍,無論是軟體還是硬體實現。速度一直是RSA的缺陷。一般來說只用於少量數據加密。RSA的速度比對應同樣安全級別的對稱密碼演算法要慢1000倍左右。
基礎
大數分解和素性檢測——將兩個大素數相乘在計算上很容易實現,但將該乘積分解為兩個大素數因子的計算量是相當巨大的,以至於在實際計算中是不能實現的。
1.RSA密碼體制的建立:
(1)選擇兩個不同的大素數p和q;
(2)計算乘積n=pq和Φ(n)=(p-1)(q-1);
(3)選擇大於1小於Φ(n)的隨機整數e,使得gcd(e,Φ(n))=1;
(4)計算d使得de=1mod Φ(n);
(5)對每一個密鑰k=(n,p,q,d,e),定義加密變換為Ek(x)=xemodn,解密變換為Dk(x)=ydmodn,這里x,y∈Zn;
(6)以{e,n}為公開密鑰,{p,q,d}為私有密鑰。
2.RSA演算法實例:
下面用兩個小素數7和17來建立一個簡單的RSA演算法:
(1)選擇兩個素數p=7和q=17;
(2)計算n=pq=7 17=119,計算Φ(n)=(p-1)(q-1)=6 16=96;
(3)選擇一個隨機整數e=5,它小於Φ(n)=96並且於96互素;
(4)求出d,使得de=1mod96且d<96,此處求出d=77,因為 77 5=385=4 96+1;
(5)輸入明文M=19,計算19模119的5次冪,Me=195=66mod119,傳出密文C=66;(6)接收密文66,計算66模119的77次冪;Cd=6677≡19mod119得到明文19。
⑵ RSA演算法 網路中N個用戶進行加密通信 需要的密鑰個數是
(2008.04)採用RSA演算法,網路中N個用戶之間進行加密通信,需要的密鑰個數是 。
A)N ×(N-1) B)N C)2N D)N*N
解析:RSA演算法使用方便,尤其是公開密鑰的特徵使得用戶在數據傳輸之前無須交換密鑰,即使和多個用戶進行秘密通信,也無須記憶太多密鑰;原理上,N個用戶進行通信,需要N對密鑰,但每個用戶只需記憶自己秘密密鑰,並去公共存儲區獲取其他用戶的公開密鑰,所以答案是B。
⑶ 對於RSA演算法,設截獲e=5,n=35的用戶密文C=10,請問明文M是多少
解密密鑰:{d,n}={d,35},
密文:C=10,
選擇兩個素數:p=5,q=7,則n=35=5*7。
計算φ(p-1)(q-1)=(5-1)(7-1)=24,在[0,23]中選擇一個和24互素的數,本題選e=5,得5*d=l mod 24,解出d。不難得出,d=5,因為e×d = 5×5 = 25 = 1*24+1=1 mod 24。
因為:m=Cd(mod n)
所以,m=Cd(mod n)=5。
⑷ RSA演算法舉例
首先看下rsa演算法:
找兩素數p和q
計算n=p*q和
t=(p-1)*(q-1)
取小於n的一個數e,並且e與t互質,就是最大公約數是1
找一個數d,d滿足(ed-1)
mod
t
=0
公鑰取(n,e),私鑰取(n,d)
現在開始分析,
已知公鑰是(n=35,e=5),那麼
n=p*q,p與q只能是7和5
那麼t就是24
而(ed-1)%t=0
也就是(5d-1)%24=0,那麼可以取d為5
所以私鑰是
(d=5,n=35)
解密公式:m=c^d
mod
n
=10^5
mod
35
=5
所以明文m是5
⑸ rsa演算法中p,q,n,e,d一般大小都為多少啊
RSA遭受攻擊的很多情況是因為演算法實現的一些細節上的漏洞所導致的,所以在使用RSA演算法構造密碼系統時,為保證安全,在生成大素數的基礎上,還必須認真仔細選擇參數,防止漏洞的形成。根據RSA加解密過程,其主要參數有三個:模數N,加密密鑰e,解密密鑰d。
3.4.1 模數N的確定
雖然迄今人們無法證明,破解RSA系統等於對N因子分解,但一般相信RSA系統的安全性等同於因子分解,即:若能分解因子N,即能攻破RSA系統,若能攻破RSA系統,即能分解因子Ⅳ。因此,在使用RSA系統時,對於模數N的選擇非常重要。在RSA演算法中,通過產生的兩個大素數p和q相乘得到模數N,而後分別通過對它們的數學運算得到密鑰對。由此,分解模數N得到p和q是最顯然的攻擊方法,當然也是最困難的方法,如果模數N被分解,攻擊者利用得到的P和q便可計算出,進而通過公開密鑰e由解密密鑰d,則RSA體制立刻被攻破。相當一部分的對RSA的攻擊就是試圖分解模數N,選擇合適的N是實現RSA演算法並防止漏洞的重要環節。一般地,模數N的確定可以遵循以下幾個原則:
①p和q之差要大。
當p和q相差很小時,在已知n的情況下,可假定二者的平均值為,然後利用,若等式右邊可開方,則得到及,即N被分解。
②p-1和q-1的最大公因子應很小。
③p和q必須為強素數。
一素數p如果滿足:
條件一:存在兩個大素數,,使得|p-1且|p+1;
條件二:存在四個大素數,,,使得。則此素數為強素數。其中,,,稱為3級的素數,,稱為2級的素數,p則稱為1級的素數,很明顯地,任何素數均為3級的素數。只有兩個強素數的積所構成的N,其因子分解才是較難的數學問題。
④p和q應大到使得因子分解N為計算上不可能。
RSA的安全性依賴於大數的因子分解,若能因子分解模數N,則RSA即被攻破,因此模數N必須足夠大直至因子分解N在計算上不可行。因子分解問題為密碼學最基本的難題之一,如今,因子分解的演算法已有長足的進步,但仍不足以說明RSA可破解。為保證安全性,實際應用中所選擇的素數P和拿至少應該為300位以上的二進制數,相應的模數N將是600位以上的二進制數。
目前,SET(Secure Electronic Transaction)協議中要求CA採用2048比特長的密鑰,其他實體使用1024比特的密鑰。隨著計算能力的提高和分布式運算的發展,安全密鑰的長度將是動態增長的。
Jadith Moore給出了使用RSA時有關模數的一些限制:
①若給定模數的一個加/解密密鑰指數對已知,攻擊者就能分解這個模數。
②若給定模數的一個加/解密密鑰指數對已知,攻擊者無需分解模數Ⅳ就可以計算出別的加/解密密鑰指數對。
③在通信網路中,利用RSA的協議不應該使用公共模數。
④消息應該用隨機數填充以避免對加密指數的攻擊。
3.4.2 e的選取原則
在RSA演算法中,e和互質的條件容易滿足,如果選擇較小的e,則加、解密的速度加快,也便於存儲,但會導致安全問題。
一般地,e的選取有如下原則:
①e不能夠太小。在RSA系統中,每人的公開密鑰P只要滿足即可,也即e可以任意選擇,為了減少加密運算時間,很多人採用盡可能小的e值,如3。但是已經證明低指數將會導致安全問題,故此,一般選擇e為16位的素數,可以有效防止攻擊,又有較快速度。
②e應選擇使其在的階為最大。即存在i,使得,
可以有效抗擊攻擊。
3.4.3 d的選取原則
一般地,私密密鑰d要大於。在許多應用場合,常希望使用位數較短的密鑰以降低解密或簽名的時間。例如IC卡應用中,IC卡CPU的計算能力遠低於計算機主機。長度較短的d可以減少IC卡的解密或簽名時間,而讓較復雜的加密或驗證預算(e長度較長)由快速的計算機主機運行。一個直接的問題就是:解密密鑰d的長度減少是否會造成安全性的降低?很明顯地,若d的長度太
小,則可以利用已知明文M加密後得,再直接猜測d,求出是否等於M。若是,則猜測J下確,否則繼續猜測。若d的長度過小,則猜測的空間變小,猜中的可能性加大,已有證明當時,可以由連分式演算法在多項式時間內求出d值。因此其長度不能過小。
⑹ RSA演算法計算
你所說的:
n=20
d=7 公鑰
e=3 私鑰
對M=3 進行加密
M'=M^d%n (M的d次方,然後除以n取余數)
M'=3^7%20=2187%20=7 加密後等於7
對M'=7進行解密
M=M'^e%n=7^3%20=343%20=3 解密後又變成3了
我空間裡面里的一篇文章寫的非常清楚,還有例子,想了解清楚點可以再去看看
http://hi..com/lsgo/blog/item/5fd0da24d495666834a80fb8.html
你取的兩個素數太小了,所以n太小根本起不了作用。至少要取1024位的數字。
⑺ RSA演算法的具體過程
具體過程很復雜哦。主要思想是基於大數分解的復雜度:
例如:
你的明文是abc,可用ASCII等方式化成整數串,例如化成117.
選取密鑰為129,
開始加密,進行質數計算:117*129=15093。 這個過程很快。
把密文15093公開到網路上。
敵人解密時,只知道15093,想要得到117會花費很長的時間。解密非常控困難。
而你的朋友由於知道密鑰129,則可以很快得到明文117.
⑻ 已知RSA演算法中,素數p=5,q=7,模數n=35,公開密鑰e=5,密文c=10,求明文
密鑰d=5
明文m=c的d次方mod n
m=100000mod35
=5
或
解密密鑰:{d,n}={d,35},
密文:C=10,
選擇兩個素數:p=5,q=7,則n=35=5*7。
計算φ(p-1)(q-1)=(5-)(7-1)=24,在[0,23]中選擇一個和24互素的數,本題選e=5,得5*d=l mod 24,解出d。不難得出,d=5,因為e×d = 5×5 = 25 = 1*24+1=1 mod 24。
因為:m=Cd(mod n)
所以,m=Cd(mod n)=5。
(8)rsa演算法n擴展閱讀:
當公鑰e取較小的值,雖然會使加密變得易於實現,速度有所提高,但這樣做也是不安全的。最簡單的辦法就是e和d都取較大的值。
因為密鑰的產生受素數產生技術的限制,所以也有它的局限性。
(1)密鑰的產生受素數產生技術的限制,因而難以做到一次一密。
(2)分組長度太大,為保證安全性,n至少也要600比特以上,使運算代價很高,尤其是速度較慢,比對稱密碼演算法慢幾個數量級;隨著大整數素因數分解演算法的改進和計算機計算能力的提高,對n的長度在不斷增加,不利於實現數據格式的標准化。
⑼ RSA加密演算法,已知e=31、n=35 求d,C=10怎麼得出明文M和私鑰d,最好能有詳細的計算過程~
你太強了吧,私鑰幾乎推導不出來!這個難度太大了,而且n也不可能等於35,它的長度必須是128的倍數