Ⅰ RAS加解密詳解
RSA演算法是現今使用最廣泛的公鑰密碼演算法,也是號稱地球上最安全的加密演算法。在了解RSA演算法之前,先熟悉下幾個術語
根據密鑰的使用方法,可以將密碼分為對稱密碼和公鑰密碼
對稱密碼:加密和解密使用同一種密鑰的方式
公鑰密碼:加密和解密使用不同的密碼的方式,因此公鑰密碼通常也稱為非對稱密碼。
RSA的加密過程可以使用一個通式來表達
也就是說RSA加密是對明文的E次方後除以N後求余數的過程。就這么簡單?對,就是這么簡單。
從通式可知,只要知道E和N任何人都可以進行RSA加密了,所以說E、N是RSA加密的密鑰,也就是說 E和N的組合就是公鑰 ,我們用(E,N)來表示公鑰
不過E和N不並不是隨便什麼數都可以的,它們都是經過嚴格的數學計算得出的,關於E和N擁有什麼樣的要求及其特性後面會講到。順便啰嗦一句E是加密(Encryption)的首字母,N是數字(Number)的首字母
RSA的解密同樣可以使用一個通式來表達
也就是說對密文進行D次方後除以N的余數就是明文,這就是RSA解密過程。知道D和N就能進行解密密文了,所以D和N的組合就是私鑰
從上述可以看出RSA的加密方式和解密方式是相同的,加密是求「E次方的mod N」;解密是求「D次方的mod N」
此處D是解密(Decryption)的首字母;N是數字(Number)的首字母。
小結下
既然公鑰是(E,N),私鑰是(D,N)所以密鑰對即為(E,D,N)但密鑰對是怎樣生成的?步驟如下:
准備兩個質數p,q。這兩個數不能太小,太小則會容易破解,將p乘以q就是N
L 是 p-1 和 q-1的最小公倍數,可用如下表達式表示
E必須滿足兩個條件:E是一個比1大比L小的數,E和L的最大公約數為1
用gcd(X,Y)來表示X,Y的最大公約數則E條件如下(gcd釋義:greatest common divisor>):
之所以需要E和L的最大公約數為1是為了保證一定存在解密時需要使用的數D。現在我們已經求出了E和N也就是說我們已經生成了密鑰對中的公鑰了。
數D是由數E計算出來的。D、E和L之間必須滿足以下關系:
只要D滿足上述2個條件,則通過E和N進行加密的密文就可以用D和N進行解密。
簡單地說條件2是為了保證密文解密後的數據就是明文。
現在私鑰自然也已經生成了,密鑰對也就自然生成了。
小結下:
我們用具體的數字來實踐下RSA的密鑰對對生成,及其加解密對全過程。為方便我們使用較小數字來模擬。
我們准備兩個很小對質數,
p = 17
q = 19
N = p * q = 323
L = lcm(p-1, q-1)= lcm(16,18) = 144
144為16和18對最小公倍數
求E必須要滿足2個條件:1 < E < L ,gcd(E,L)=1
即1 < E < 144,gcd(E,144) = 1
E和144互為質數,5顯然滿足上述2個條件
故E = 5
此時 公鑰=(E,N)= (5,323)
求D也必須滿足2個條件:1 < D < L,E*D mod L = 1
即1 < D < 144,5 * D mod 144 = 1
顯然當D= 29 時滿足上述兩個條件
1 < 29 < 144
5*29 mod 144 = 145 mod 144 = 1
此時 私鑰=(D,N)=(29,323)
准備的明文必須時小於N的數,因為加密或者解密都要mod N其結果必須小於N
假設明文 = 123
解密後的明文為123。
至此RSA的演算法原理已經講解完畢
Ⅱ RSA加密/解密和簽名/驗簽過程理解
加密是為了防止信息被泄露
簽名是為了防止信息被篡改
第一個場景:戰場上,B要給A傳遞一條消息,內容為某一指令。
RSA的加密過程如下:
(1)A生成一對密鑰(公鑰和私鑰),私鑰不公開,A自己保留。公鑰為公開的,任何人可以獲取。
(2)A傳遞自己的公鑰給B,B用A的公鑰對消息進行加密。
(3)A接收到B加密的消息,利用A自己的私鑰對消息進行解密。
在這個過程中,只有2次傳遞過程,第一次是A傳遞公鑰給B,第二次是B傳遞加密消息給A,即使都被敵方截獲,也沒有危險性,因為只有A的私鑰才能對消息進行解密,防止了消息內容的泄露。
第二個場景:A收到B發的消息後,需要進行回復「收到」。
RSA簽名的過程如下:
(1)A生成一對密鑰(公鑰和私鑰),私鑰不公開,A自己保留。公鑰為公開的,任何人可以獲取。
(2)A給B發送消息,A先計算出消息的消息摘要,然後使用自己的私鑰加密消息摘要,被加密的消息摘要就是簽名.並將簽名和消息本身(簽名原文)一起傳遞給B.(A用自己的私鑰給消息摘要加密成為簽名)
(3)B收到消息後,也會使用和A相同的方法提取消息摘要,然後用A的公鑰解密簽名,並與自己計算出來的消息摘要進行比較-->如果相同則說明消息是A發送給B的,同時,A也無法否認自己發送消息給B的事實.(B使用A的公鑰解密簽名文件的過程,叫做"驗簽")
在這個過程中,只有2次傳遞過程,第一次是A傳遞加簽的消息和消息本身給B,第二次是B獲取A的公鑰,即使都被敵方截獲,也沒有危險性,因為只有A的私鑰才能對消息進行簽名,即使知道了消息內容,也無法偽造帶簽名的回復給B,防止了消息內容的篡改。
但是,綜合兩個場景你會發現,第一個場景雖然被截獲的消息沒有泄露,但是可以利用截獲的公鑰,將假指令進行加密,然後傳遞給A。第二個場景雖然截獲的消息不能被篡改,但是消息的內容可以利用公鑰驗簽來獲得,並不能防止泄露。所以在實際應用中,要根據情況使用,也可以同時使用加密和簽名,比如A和B都有一套自己的公鑰和私鑰,當A要給B發送消息時,先用B的公鑰對消息加密,再對加密的消息使用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演算法的加密運算,需要完整的演算過程。
我來回答你可以閉帖了,呵呵
看你題目的意思就是打算把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演算法:
找兩素數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加密解密演算法的證明
1. 選擇兩個質數 p, q
2. 設 n =p * q
3. 求出n的歐拉函數 f = (p-1)*(q-1)
4. 在[2, f)的范圍內隨機找一個與f互質的數 e 作為公鑰的指數
5. 算出私鑰指數d,d為公鑰指數e對 f 的一個模反元素,即 ed = kf +1 (k為正整數)
6. 將(n, e)封裝成公鑰,將(n, d)封裝成私鑰
1. 設被加密的數為m, m為小於n的非負整數
2. 算出 c = (m^e) % n ,則 c 即為密文
算出 (c^d)%n , 即為被加密的數m,證明如下。
因為 c=m^e - n*g,其中g為非負整數,
所以 (c^d)%n = [ (m^e - n*g) ^ d ] % n
展開多項式後將n的整數倍的項去除,得到
[( m^e )^d] % n
=[ m^(e*d) ] % n
=[ m^(k*f+1) ] % n
=[ m * m^(k*f) ] % n
={ m * [ (m^f) ^ k] } % n
接下來分三種情況討論:
第一種情況:m=0或者m=1
則 { m * [ (m^f) ^ k] } % n = m
第二種情況:m>1,且m與n互質
根據 歐拉定理 ,m^f = h*n+1,其中h為正整數
則 { m * [ (m^f) ^ k] } % n
={ m * [ ( h*n+1 ) ^ k] } % n
={ m * [ i*n + 1 ] } % n (其中i為展開指數多項式後合並n的同類項得到的正整數)
=m%n
=m (因為m<n)
第三種情況:m>1,且m與n不互質
因為n=p*q, 且p, q均為質數,則 m=j*p或者j*q, 其中j為正整數
當m=j*p時, 因為m<n, 所以m與q互質
(證明:如果m, q不互質,則m含有質因數q,因為p與q互質, 所以 j 含有質因數p, 這與m<n矛盾)
根據歐拉定理 m^(q-1)=x*q+1 ,其中x為正整數
則 { m * [ (m^f) ^ k] } % n
= { m * [ ( m^[(p-1)*(q-1)] ) ^ k] } % n
={ m * [ m^(q-1)^(p-1)^k ] } % n
={ j * p * [ ( x*q+1 )^ (p-1)^k ] } % n
={ j * p * [ y*q + 1 ] } % n (其中y為展開指數多項式後合並q的同類項得到的正整數)
=(j*p*y*q + m ) %n
=(j*y*n+m) % n
=m
同理,當m=j*q時也成立。
證明完畢。
RSA解密正確性證明_國科大網安二班的博客-CSDN博客
https://blog.csdn.net/weixin_46395886/article/details/114700012#:~:text=RSA%E8%A7%A3%E5%AF%86%E6%AD%A3%E7%A1%AE%E6%80%A7%E8%AF%81%E6%98%8E%20%E5%85%88%E6%8F%8F%E8%BF%B0%E4%B8%80%E4%B8%8BRSA%E5%AF%86%E7%A0%81%E4%BD%93%E5%88%B6%EF%BC%9A%20RSA%E5%AF%86%E7%A0%81%E4%BD%93%E5%88%B6%EF%BC%9A%20%E5%A4%A7%E7%B4%A0%E6%95%B0%20p%2Cq%20%EF%BC%8C%E6%A8%A1%E6%95%B0,n%20%3D%20pq%20%EF%BC%8C%E5%8A%A0%E5%AF%86%E6%8C%87%E6%95%B0%20b%20%EF%BC%8C%E8%A7%A3%E5%AF%86%E6%8C%87%E6%95%B0
RSA演算法原理 - 知乎 (hu.com)
https://zhuanlan.hu.com/p/48249182#:~:text=RSA%E7%AE%97%E6%B3%95%E5%8E%9F%E7%90%86%201%20%EF%BC%881%EF%BC%89%E4%B9%99%E6%96%B9%E7%94%9F%E6%88%90%E4%B8%A4%E6%8A%8A%E5%AF%86%E9%92%A5%20%28%E5%85%AC%E9%92%A5%E5%92%8C%E7%A7%81%E9%92%A5%29%E3%80%82...,2%20%EF%BC%882%EF%BC%89%E7%94%B2%E6%96%B9%E8%8E%B7%E5%8F%96%E4%B9%99%E6%96%B9%E7%9A%84%E5%85%AC%E9%92%A5%EF%BC%8C%E7%84%B6%E5%90%8E%E7%94%A8%E5%AE%83%E5%AF%B9%E4%BF%A1%E6%81%AF%E5%8A%A0%E5%AF%86%E3%80%82%203%20%EF%BC%883%EF%BC%89%E4%B9%99%E6%96%B9%E5%BE%97%E5%88%B0%E5%8A%A0%E5%AF%86%E5%90%8E%E7%9A%84%E4%BF%A1%E6%81%AF%EF%BC%8C%E7%94%A8%E7%A7%81%E9%92%A5%E8%A7%A3%E5%AF%86%E3%80%82