當前位置:首頁 » 密碼管理 » rsa怎麼加密

rsa怎麼加密

發布時間: 2022-09-01 17:06:50

㈠ RSA加密演算法,求大神幫解答

如果用一段已經知道的明文,經過公鑰加密,得到密文。現在已知明文密文和n, 是不是就可以通過解密的公式不斷的冪運算求出私鑰d呢?

㈡ RSA  加密演算法(原理篇)

前幾天看到一句話,「我們中的很多人把一生中最燦爛的笑容大部分都獻給了手機和電腦屏幕」。心中一驚,這說明了什麼?手機和電腦已經成為了我們生活中的一部分,所以才會有最懂你的不是你,也不是你男朋友,而是大數據。

如此重要的個人數據,怎樣才能保證其在互聯網上的安全傳輸呢?當然要靠各種加密演算法。說起加密演算法,大家都知道有哈希、對稱加密和非對稱加密了。哈希是一個散列函數,具有不可逆操作;對稱加密即加密和解密使用同一個密鑰,而非對稱加密加密和解密自然就是兩個密鑰了。稍微深入一些的,還要說出非對稱加密演算法有DES、3DES、RC4等,非對稱加密演算法自然就是RSA了。那麼當我們聊起RSA時,我們又在聊些什麼呢?今天筆者和大家一起探討一下,有不足的地方,還望各位朋友多多提意見,共同進步。

RSA簡介:1976年由麻省理工學院三位數學家共同提出的,為了紀念這一里程碑式的成就,就用他們三個人的名字首字母作為演算法的命名。即 羅納德·李維斯特 (Ron Rivest)、 阿迪·薩莫爾 (Adi Shamir)和 倫納德·阿德曼 (Leonard Adleman)。

公鑰:用於加密,驗簽。

私鑰:解密,加簽。

通常知道了公鑰和私鑰的用途以後,即可滿足基本的聊天需求了。但是我們今天的主要任務是來探究一下RSA加解密的原理。

說起加密演算法的原理部分,肯定與數學知識脫不了關系。

我們先來回憶幾個數學知識:

φn = φ(A*B)=φ(A)*φ(B)=(A-1)*(B-1)。

這個公式主要是用來計算給定一個任意的正整數n,在小於等於n的正整數中,有多少個與n構成互質的關系。

其中n=A*B,A與B互為質數,但A與B本身並不要求為質數,可以繼續展開,直至都為質數。

在最終分解完成後,即 φ(N) = φ(p1)*φ(p2)*φ(p3)... 之後,p1,p2,p3都是質數。又用到了歐拉函數的另一個特點,即當p是質數的時候,φp = p - 1。所以有了上面給出的歐拉定理公式。

舉例看一下:

計算15的歐拉函數,因為15比較小,我們可以直接看一下,小於15的正整數有 1、2、3、4、5、6、7、8、9、10、11、12、13、14。和15互質的數有1、2、4、7、8、11、13、14一共四個。

對照我們剛才的歐拉定理: 。

其他感興趣的,大家可以自己驗證。

之所以要在這里介紹歐拉函數,我們在計算公鑰和私鑰時候,會用到。

如果兩個正整數m 和 n 互質,那麼m 的 φn 次方減1,可以被n整除。

 其中  .

其中當n為質數時,那麼  上面看到的公式就變成了

 mod n   1.

這個公式也就是著名的 費馬小定理 了。

如果兩個正整數e和x互為質數,那麼一定存在一個整數d,不止一個,使得 e*d - 1 可以被x整除,即 e * d mode x   1。則稱 d 是 e 相對於 x的模反元素。

了解了上面所講的歐拉函數、歐拉定理和模反元素後,就要來一些化學反應了,請看圖:

上面這幅圖的公式變化有沒有沒看明白的,沒看明白的咱們評論區見哈。

最終我們得到了最重要的第5個公式的變形,即紅色箭頭後面的:

 mod n   m。

其中有幾個關系,需要搞明白,m 與 n 互為質數,φn = x,d 是e相對於x的模反元素。

有沒有看到一些加解密的雛形。

從 m 到 m。 這中間涵蓋了從加密到解密的整個過程,但是缺少了我們想要的密文整個過程。

OK,下面引入本文的第四個數學公式:

我們來看一下整個交換流程:

1、客戶端有一個數字13,服務端有一個數字15;

2、客戶端通過計算 3的13次方 對 17 取余,得到數字12; 將12發送給服務端;同時服務端通過計算3的15次方,對17取余,得到數字6,將6發送給客戶端。至此,整個交換過程完成。

3、服務端收到數字12以後,繼續計算,12的15次方 對 17取余,得到 數字10。

4、客戶端收到數字 6以後,繼續計算,6的13次方 對 17 取余,得到數字 10。

有沒有發現雙方,最終得到了相同的內容10。但是這個數字10從來沒有在網路過程中出現過。

好,講到這里,可能有些人已經恍然大悟,這就是加密過程了,但是也有人會產生疑問,為什麼要取數字3 和 17 呢,這里還牽涉到另一個數學知識,原根的問題。即3是17的原根。看圖

有沒有發現規律,3的1~16次方,對17取余,得到的整數是從1~16。這時我們稱3為17的原根。也就是說上面的計算過程中有一組原根的關系。這是最早的迪菲赫爾曼秘鑰交換演算法。

解決了為什麼取3和17的問題後,下面繼續來看最終的RSA是如何產生的:

還記得我們上面提到的歐拉定理嗎,其中 m 與 n 互為質數,n為質數,d 是 e 相對於 φn的模反元素。

當迪菲赫爾曼密鑰交換演算法碰上歐拉定理會產生什麼呢?

我們得到下面的推論:

好,到這里我們是不是已經看到了整個的加密和解密過程了。

其中 m 是明文;c 是密文; n 和 e 為公鑰;d 和 n 為私鑰 。

其中幾組數字的關系一定要明確:

1、d是e 相對於 φn 的模反元素,φn = n-1,即 e * d mod n = 1.

2、m 小於 n,上面在講迪菲赫爾曼密鑰交換演算法時,提到原根的問題,在RSA加密演算法中,對m和n並沒有原根條件的約束。只要滿足m與n互為質數,n為質數,且m < n就可以了。

OK,上面就是RSA加密演算法的原理了,經過上面幾個數學公式的狂轟亂炸,是不是有點迷亂了,給大家一些時間理一下,後面會和大家一起來驗證RSA演算法以及RSA為什麼安全。

㈢ A向B發送信息如何利用RSA加密

RSA加密是非對稱加密的演算法
A向B發送信息通過RSA用公開密鑰對A明文進行加密
之後發送給B
B通過密鑰對A發來的信息進行解密
其中這個密鑰是不公開的
所以RSA的保密性
完整性都很好

㈣ RSA加密演算法的內容是怎樣的

1) 確定密鑰的寬度。
2) 隨機選擇兩個不同的素數p處q,它們的寬度是密鑰寬度的二分之一。
3) 計算出p和q的乘積n 。
4) 在2和Φ(n)之間隨機選擇一個數e , e 必須和Φ(n)互素,整數e用做加密密鑰(其中Φ(n)=(p-1)*(q-1))。
5) 從公式ed ≡ 1 mod Φ(n)中求出解密密鑰d 。
6) 得公鑰(e ,n ), 私鑰 (d , n) 。
7) 公開公鑰,但不公開私鑰。
8) 將明文P (假設P是一個小於n的整數)加密為密文C,計算方法為:
C = P^e mod n
9) 將密文C解密為明文P,計算方法為:
P = C^d mod n
然而只根據n和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行加密,但只有授權用戶(知道d)才可對密文解密

㈤ RSA演算法如何加密文件,請教。。。java

RSA演算法很簡單,就是基於歐拉定理的簡單演算法 M=5是明文,計算過程如下: n=p*q=33; (p-1)*(q-1)=20; 加密:y=密文,x=明文=5; y=x^e mod n = 5^7 mod 33 = 14; 解密: x=y^d mod n; d*e= 1 [mod(p-1)*(q-1)]; 7d=1(mod 20)所以d=3; 所以x=y^d mod n= 14^3 mod 33 = 5;解完 加密由5~14,解密由14~5,實現了RSA演算法的加密解密過程,證明了計算的正確性。

㈥ 如何使用rsa對tcp進行加密

RSA演算法是第一個能同時用於加密和數字簽名的演算法。RSA演算法能生成公私鑰對。
假設A、B要通信,那麼他們需要彼此知道對方的公鑰,如果a向b發送信息,a先用自己的私鑰對信息進行加密(即簽名),然後用b的公鑰進行加密。當 b收到消息時,先用自己的私鑰進行解密,然後用a的公用進行解密(即驗證簽名),即可看到a發送的明文信息。

㈦ 請較為詳細地描述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演算法是第一個能同時用於加密和數字簽名的演算法。RSA演算法能生成公私鑰對。
假設A、B要通信,那麼他們需要彼此知道對方的公鑰,如果a向b發送信息,a先用自己的私鑰對信息進行加密(即簽名),然後用b的公鑰進行加密。當
b收到消息時,先用自己的私鑰進行解密,然後用a的公用進行解密(即驗證簽名),即可看到a發送的明文信息。
若是用對稱密鑰進行加密,則雙方公用一個密鑰,這個密鑰需要絕對保密,不能讓別人知道。a在向b發送信息前,先用這個密鑰對信息進行加密,然後把加密的信息發送給b,之後再把密鑰通過另一通道發送給b(要保證密鑰傳輸的安全,不被其他人截獲),b收到密文和密鑰後,再用這個密鑰進行解密,就可以得到原文。
若混合使用,假設還是a向b發送信息,a先用自己的私鑰進行簽名,然後再用雙方公用的對稱密鑰(即會話密鑰)進行加密,得到加密後的密文,然後用b的公鑰對雙方的會話密鑰進行加密,得到加密的會話密鑰,然後把加密的密文和加密的會話密鑰一起發給b,b收到後先用自己的私鑰對加密的會話密鑰進行解密,得到會話密鑰,再用會話密鑰對加密的密文進行解密,得到簽名的信息,然後用a的公鑰對簽名進行驗證,便可得到原始信息。

熱點內容
隨機啟動腳本 發布:2025-07-05 16:10:30 瀏覽:510
微博資料庫設計 發布:2025-07-05 15:30:55 瀏覽:14
linux485 發布:2025-07-05 14:38:28 瀏覽:296
php用的軟體 發布:2025-07-05 14:06:22 瀏覽:747
沒有許可權訪問計算機 發布:2025-07-05 13:29:11 瀏覽:420
javaweb開發教程視頻教程 發布:2025-07-05 13:24:41 瀏覽:671
康師傅控流腳本破解 發布:2025-07-05 13:17:27 瀏覽:229
java的開發流程 發布:2025-07-05 12:45:11 瀏覽:672
怎麼看內存卡配置 發布:2025-07-05 12:29:19 瀏覽:272
訪問學者英文個人簡歷 發布:2025-07-05 12:29:17 瀏覽:822