導航:首頁 > 源碼編譯 > RSA演算法

RSA演算法

發布時間:2022-02-11 19:02:54

Ⅰ 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演算法加密

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是什麼意思

RSA演算法是一種非對稱密碼演算法,所謂非對稱,就是指該演算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。
RSA的演算法涉及三個參數,n、e1、e2。
其中,n是兩個大質數p、q的積,n的二進製表示時所佔用的位數,就是所謂的密鑰長度。
e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。
(n及e1),(n及e2)就是密鑰對。

RSA加解密的演算法完全相同,設A為明文,B為密文,則:A=B^e1 mod n;B=A^e2 mod n;
e1和e2可以互換使用,即:
A=B^e2 mod n;B=A^e1 mod n;

補充回答:
對明文進行加密,有兩種情況需要這樣作:
1、您向朋友傳送加密數據,您希望只有您的朋友可以解密,這樣的話,您需要首先獲取您朋友的密鑰對中公開的那一個密鑰,e及n。然後用這個密鑰進行加密,這樣密文只有您的朋友可以解密,因為對應的私鑰只有您朋友擁有。
2、您向朋友傳送一段數據附加您的數字簽名,您需要對您的數據進行MD5之類的運算以取得數據的"指紋",再對"指紋"進行加密,加密將使用您自己的密鑰對中的不公開的私鑰。您的朋友收到數據後,用同樣的運算獲得數據指紋,再用您的公鑰對加密指紋進行解密,比較解密結果與他自己計算出來的指紋是否一致,即可確定數據是否的確是您發送的、以及在傳輸過程中是否被篡改。

密鑰的獲得,通常由某個機構頒發(如CA中心),當然也可以由您自己創建密鑰,但這樣作,您的密鑰並不具有權威性。

計算方面,按公式計算就行了,如果您的加密強度為1024位,則結果會在有效數據前面補0以補齊不足的位數。補入的0並不影響解密運算。

Ⅳ RSA演算法介紹

RSA演算法是第一個能同時用於加密和數字簽名的演算法,也易於理解和操作。 RSA是被研究得最廣泛的公鑰演算法,從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。RSA的安全性依賴於大數的因子分解,但並沒有從理論上證明破譯RSA的難度與大數分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人士傾向於因子分解不是NPC問題。 RSA的缺點主要有:A)產生密鑰很麻煩,受到素數產生技術的限制,因而難以做到一次一密。B)分組長度太大,為保證安全性,n 至少也要 600 bits以上,使運算代價很高,尤其是速度較慢,較對稱密碼演算法慢幾個數量級;且隨著大數分解技術的發展,這個長度還在增加,不利於數據格式的標准化。目前,SET(Secure Electronic Transaction)協議中要求CA採用2048比特長的密鑰,其他實體使用1024比特的密鑰。 這種演算法1978年就出現了,它是第一個既能用於數據加密也能用於數字簽名的演算法。它易於理解和操作,也很流行。演算法的名字以發明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman。 RSA演算法是一種非對稱密碼演算法,所謂非對稱,就是指該演算法需要一對密鑰,使用其中一個加密,則需要用另一個才能解密。 RSA的演算法涉及三個參數,n、e1、e2。 其中,n是兩個大質數p、q的積,n的二進製表示時所佔用的位數,就是所謂的密鑰長度。 e1和e2是一對相關的值,e1可以任意取,但要求e1與(p-1)*(q-1)互質;再選擇e2,要求(e2*e1)mod((p-1)*(q-1))=1。 (n及e1),(n及e2)就是密鑰對。 RSA加解密的演算法完全相同,設A為明文,B為密文,則:A=B^e1 mod n;B=A^e2 mod n; e1和e2可以互換使用,即: A=B^e2 mod n;B=A^e1 mod n;
[編輯本段]一、RSA 的安全性
RSA的安全性依賴於大數分解,但是否等同於大數分解一直未能得到理論上的證明,因為沒有證明破解 RSA就一定需要作大數分解。假設存在一種無須分解大數的演算法,那它肯定可以修改成為大數分解演算法。目前, RSA 的一些變種演算法已被證明等價於大數分解。不管怎樣,分解n是最顯然的攻擊方法。現在,人們已能分解多個十進制位的大素數。因此,模數n 必須選大一些,因具體適用情況而定。
[編輯本段]二、RSA的速度
由於進行的都是大數計算,使得RSA最快的情況也比DES慢上好幾倍,無論是軟體還是硬體實現。速度一直是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都取較大的值。

可以直接hi我
給你一些例子

Ⅳ RSA演算法的原理及演算過程

RSA演算法非常簡單,概述如下:
找兩素數p和q
取n=p*q
取t=(p-1)*(q-1)
取任何一個數e,要求滿足e<t並且e與t互素(就是最大公因數為1)
取d*e%t==1

這樣最終得到三個數: n d e

設消息為數M (M <n)
設c=(M**d)%n就得到了加密後的消息c
設m=(c**e)%n則 m == M,從而完成對c的解密。
註:**表示次方,上面兩式中的d和e可以互換。

在對稱加密中:
n d兩個數構成公鑰,可以告訴別人;
n e兩個數構成私鑰,e自己保留,不讓任何人知道。
給別人發送的信息使用e加密,只要別人能用d解開就證明信息是由你發送的,構成了簽名機制。
別人給你發送信息時使用d加密,這樣只有擁有e的你能夠對其解密。

rsa的安全性在於對於一個大數n,沒有有效的方法能夠將其分解
從而在已知n d的情況下無法獲得e;同樣在已知n e的情況下無法
求得d。

RSA簡潔幽雅,但計算速度比較慢,通常加密中並不是直接使用RSA 來對所有的信息進行加密,
最常見的情況是隨機產生一個對稱加密的密鑰,然後使用對稱加密演算法對信息加密,之後用
RSA對剛才的加密密鑰進行加密。

最後需要說明的是,當前小於1024位的N已經被證明是不安全的
自己使用中不要使用小於1024位的RSA,最好使用2048位的。

Ⅵ RSA演算法的實現

RSA畢業設計論文
http://wenku..com/view/8b1804c42cc58bd63186bd77.html

Ⅶ 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演算法的具體過程

具體過程很復雜哦。主要思想是基於大數分解的復雜度:
例如:
你的明文是abc,可用ASCII等方式化成整數串,例如化成117.
選取密鑰為129,
開始加密,進行質數計算:117*129=15093。 這個過程很快。

把密文15093公開到網路上。
敵人解密時,只知道15093,想要得到117會花費很長的時間。解密非常控困難。

而你的朋友由於知道密鑰129,則可以很快得到明文117.

Ⅸ 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演算法相關的資料

熱點內容
dos系統下命令 瀏覽:524
運維狗和程序員 瀏覽:706
哪個APP看紙牌屋 瀏覽:555
外賣領券app哪個最好買 瀏覽:313
linux中文字體包 瀏覽:752
git命令行建分支 瀏覽:848
致信伺服器地址和埠要怎麼找 瀏覽:983
android圖片文件壓縮 瀏覽:894
騰訊雲使用雲伺服器訪問外網 瀏覽:166
運用演算法模型給數據打標簽 瀏覽:745
雲伺服器沒有數據盤 瀏覽:812
簡潔php論壇 瀏覽:729
復制跳轉微信源碼 瀏覽:608
crc16計演算法 瀏覽:417
單片機65 瀏覽:546
域伺服器如何控制客戶端文件 瀏覽:140
程序員只能去北京嗎 瀏覽:633
吃雞租游戲哪個app最好 瀏覽:672
超級兔子怎樣加密文件夾 瀏覽:70
桌面怎麼設置新文件夾 瀏覽:497