當前位置:首頁 » 密碼管理 » rsa加密流程

rsa加密流程

發布時間: 2022-07-27 20:45:54

『壹』 rsa演算法具體過程

加密:C=M的E次方mod N

mod表示模運算

3的7次方 模 20等於7 所以加密後密文就是7

解密:M=C的D次方mod N

7的3次方 模 20等於3 所以解密密後就得到明文 就是原來的3

『貳』 簡述RSA體制密鑰的生成及其加密、解密演算法。

RSA體制密鑰的生成:
1. 選擇兩個大素數,p 和q 。

2. 計算: n = p * q (p,q分別為兩個互異的大素數,p,q 必須保密,一般要求p,q為安全素數,n的長度大於512bit ,這主要是因為RSA演算法的安全性依賴於因子分解大數問題)。有歐拉函數 (n)=(p-1)(q-1)。

3. 然後隨機選擇加密密鑰e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互質。

4. 最後,利用Euclid 演算法計算解密密鑰d, 滿足de≡1(mod φ(n))。其中n和d也要互質。數e和n是公鑰,d是私鑰。兩個素數p和q不再需要,應該丟棄,不要讓任何人知道。

加密、解密演算法:

1. 加密信息 m(二進製表示)時,首先把m分成等長數據塊 m1 ,m2,..., mi ,塊長s,其中 2^s <= n, s 盡可能的大。

2. 對應的密文是:ci ≡mi^e ( mod n ) ( a )

3. 解密時作如下計算:mi ≡ci^d ( mod n ) ( b ) RSA 可用於數字簽名,方案是用 ( a ) 式簽名, ( b )式驗證。

『叄』 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演算法的加密運算,需要完整的演算過程。

我來回答你可以閉帖了,呵呵
看你題目的意思就是打算把republic這個詞按照你的方法裝換成數字例如是:X
p=3,q=11
n=p*q=33
t=(p-1)*(q-1)=20
取任何一個數e,要求滿足e<t並且e與t互素(就是最大公因數為1)
我們可以取e=7
要求d*e%t==1(D*e除以t取余等於1),我們可以找到D=3
此時我們就有了三個數
n=33
d=3 公鑰
e=7 私鑰

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

我們可以對republic詞按照你的方法裝換成數字:X一位一位的加密。
加入X的第一位是6(別的同理)
則:M = 6
加密時:(c為加密後的數字)
c=(M**d)%n=(6^3)%33=216%33=18(商6餘18),則6加密後就是18了
解密時:
設m=(c**e)%n則 m == M,
(18^7)%33=612220032%33=6(商18552122餘6)
到此加密解密完成。
至於怎麼把republic裝換成X,把X裝分成多少部分進行分批加密,你可以自己決定。但是加密的數字M 需要小於n

如果需要給你寫個程序,留個Email,我空的時候寫個發給你。

我個人給你個方法,因為n=33 >26(26個英文字母),所以可以把republic分成一個字母一個字母的加密。
按你的分發 REP 就分成數字
18 05 16
加密
(18^3)%33=5832%33= 24
(05^3)%33=125%33= 26
(16^3)%33=%33= 4
所以加密後就是
24 26 04 轉換成字母就是 XZD
解密
(24^7)%33=4586471424%33=18
(26^7)%33=8031810176%33=05
(4^7)%33=16384%33=16
又變成 18 05 16 轉換成字母就是 REP
是不是很簡單啊~~

我如果不懂。空間裡面有片文章,你可以看看,就知道我上面講的那些是什麼意思了。

RSA演算法舉例說明
http://hi..com/lsgo/blog/item/5fd0da24d495666834a80fb8.html

『伍』 尋 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的安全性依賴於大數分解。公鑰和私鑰都是兩個大素數( 大於 100個十進制位)的函數。

更具體參考《密碼學》

『陸』 簡述RSA演算法中密鑰的產生,數據加密和解密的過程,並簡單說明RSA演算法安全性的原理。

RSA演算法的數學原理

RSA演算法的數學原理:
先來找出三個數, p, q, r,

其中 p, q 是兩個相異的質數, r 是與 (p-1)(q-1) 互質的數。

p, q, r 這三個數便是 private key。接著, 找出m, 使得 rm == 1 mod (p-1)(q-1)..... 這個 m 一定存在, 因為 r 與 (p-1)(q-1) 互質, 用輾轉相除法就可以得到了..... 再來, 計算 n = pq....... m, n 這兩個數便是 public key。

編碼過程是, 若資料為 a, 將其看成是一個大整數, 假設 a < n.... 如果 a >= n 的話, 就將 a 表成 s 進位 (s <= n, 通常取 s = 2^t), 則每一位數均小於 n, 然後分段編碼...... 接下來, 計算 b == a^m mod n, (0 <= b < n), b 就是編碼後的資料...... 解碼的過程是, 計算 c == b^r mod pq (0 <= c < pq), 於是乎, 解碼完畢...... 等會會證明 c 和 a 其實是相等的 :) 如果第三者進行竊聽時, 他會得到幾個數: m, n(=pq), b...... 他如果要解碼的話, 必須想辦法得到 r...... 所以, 他必須先對 n 作質因數分解......... 要防止他分解, 最有效的方法是找兩個非常的大質數 p, q, 使第三者作因數分解時發生困難......... <定理> 若 p, q 是相異質數, rm == 1 mod (p-1)(q-1), a 是任意一個正整數, b == a^m mod pq, c == b^r mod pq, 則 c == a mod pq 證明的過程, 會用到費馬小定理, 敘述如下: m 是任一質數, n 是任一整數, 則 n^m == n mod m (換另一句話說, 如果 n 和 m 互質, 則 n^(m-1) == 1 mod m) 運用一些基本的群論的知識, 就可以很容易地證出費馬小定理的........ <證明> 因為 rm == 1 mod (p-1)(q-1), 所以 rm = k(p-1)(q-1) + 1, 其中 k 是整數 因為在 molo 中是 preserve 乘法的 (x == y mod z and u == v mod z => xu == yv mod z), 所以, c == b^r == (a^m)^r == a^(rm) == a^(k(p-1)(q-1)+1) mod pq 1. 如果 a 不是 p 的倍數, 也不是 q 的倍數時, 則 a^(p-1) == 1 mod p (費馬小定理) => a^(k(p-1)(q-1)) == 1 mod p a^(q-1) == 1 mod q (費馬小定理) => a^(k(p-1)(q-1)) == 1 mod q 所以 p, q 均能整除 a^(k(p-1)(q-1)) - 1 => pq | a^(k(p-1)(q-1)) - 1 即 a^(k(p-1)(q-1)) == 1 mod pq => c == a^(k(p-1)(q-1)+1) == a mod pq 2. 如果 a 是 p 的倍數, 但不是 q 的倍數時, 則 a^(q-1) == 1 mod q (費馬小定理) => a^(k(p-1)(q-1)) == 1 mod q => c == a^(k(p-1)(q-1)+1) == a mod q => q | c - a 因 p | a => c == a^(k(p-1)(q-1)+1) == 0 mod p => p | c - a 所以, pq | c - a => c == a mod pq 3. 如果 a 是 q 的倍數, 但不是 p 的倍數時, 證明同上 4. 如果 a 同時是 p 和 q 的倍數時, 則 pq | a => c == a^(k(p-1)(q-1)+1) == 0 mod pq => pq | c - a => c == a mod pq Q.E.D. 這個定理說明 a 經過編碼為 b 再經過解碼為 c 時, a == c mod n (n = pq).... 但我們在做編碼解碼時, 限制 0 <= a < n, 0 <= c < n, 所以這就是說 a 等於 c, 所以這個過程確實能做到編碼解碼的功能.....

『柒』 RSA已知明文和公鑰能得到私鑰加密的密文嗎

首先破解RSA是指 密文 ->明文 的過程!

假設明文m,密文c,私鑰d,公鑰e,RSA加密的流程如下:

1、兩個較大的互不相等的質數p和q

2、n = p * q

3、fn = (p - 1) * (q - 1)

4、e 與 fn 互質, 且1 < e < fn

5、d滿足 de % fn = 1

6、加解密:

c = (m^e) % n

m = (c^d) % n

上面的公式可以理解為通過公鑰加密,而通過私鑰解密。

第一種情況:已知明文和公鑰得到私鑰加密的密文,這個是加密過程,與私鑰d關系不大,加密過程主要在於n的值!

假設這種情況已知明文m,公鑰e,私鑰d,密文c有無數種。

第二種情況:已知明文密文和公鑰得到私鑰。

已知明文m,密文c,公鑰e求私鑰d,套入次公式:c= (m^e) % n,n的值也是不唯一的,所以私鑰d的值也不唯一。


在有正確答案做對比的情況下個人感覺第二種情況比較容易求出吧。

個人見解,歡迎討論。

『捌』 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過程,先跟說一下吧

  1. 隨機產生兩個大素數p和q作為密鑰對。此題:p=13,q=17,n =p*q=221

  2. 隨機產生一個加密密鑰e,使e 和(p-1)*(q-1)互素。此題:e=83

  3. 公鑰就是(n,e)。此題:(221,83)

  4. 通過e*d mod (p-1)*(q-1)=1生成解密密鑰d, ,n與d也要互素。此題:(d*83)≡1mod192

  5. 私鑰就是(n,d)。此題:(221,155)

  6. 之後發送者用公鑰加密明文M,得到密文C=M^e mod n

  7. 接受者利用私鑰解密M=C^d mod n


求解d呢,就是求逆元,de = 1 mod n這種形式就稱de於模數n說互逆元,可以看成de-ny=1,此題83e-192y=1.

用擴展的歐幾里得演算法。其實就是輾轉相除

此題:

192=2*83+26

83=3*26+5

26=5*5+1

求到余數為1了,就往回寫

1=26-5*5

=26-5*(83-3*26)

=(192-2*83)-5*(83-3*(192-2*83))

=16*192-37*83

則d=-37,取正後就是155.

記住,往回寫的時候數不該換的一定不要換,比如第二步中的26,一定不能換成(83-5)/3,那樣就求不出來了,最終一定要是192和83相關聯的表達式。還有,最好保持好的書寫格式,比如第一步2*83+26時第二步最好寫成3*26+5而不是26*3+5,要不步驟比較多的話容易亂

熱點內容
傳奇qf腳本 發布:2025-05-11 06:35:21 瀏覽:445
我的世界等價交換伺服器地址 發布:2025-05-11 06:34:49 瀏覽:430
ftp傳圖失敗 發布:2025-05-11 06:34:47 瀏覽:855
安卓如何設置抖音自動播放 發布:2025-05-11 06:32:21 瀏覽:671
c交互腳本 發布:2025-05-11 06:19:57 瀏覽:529
赤壁為什麼連接不上伺服器 發布:2025-05-11 06:14:49 瀏覽:772
linuxmysql源碼包 發布:2025-05-11 06:07:39 瀏覽:621
密碼提示默認是什麼意思 發布:2025-05-11 06:06:52 瀏覽:635
python語言編程入門 發布:2025-05-11 06:06:49 瀏覽:800
安卓855手機哪個性能最好 發布:2025-05-11 06:01:49 瀏覽:144