演算法的描述:
1.選取兩個素數p,q
2.計算n=p*q,fn=(p-1)*(q-1)
3.選擇乙個整數e,使得e與fn的最大公約數為1,e將會用於對資料進行加密。
4.計算出乙個整數d,使得d*e除fn的餘數為1。d用於對密文進行解密,還原出明文。
5.假設明文為m,密文為c。
如果需要對原文進行加密,則進行如下的計算
c= m
e mod n
如需將密文還原成明文,進行如下計算
m=cd
mod n
6.假設p=101,q=103,則n=101*103=10403,fn=100*102=10200
e=7。因為7與10200的最大公約數為1。
d=8743。因為8743*7 mod 10200=1
(1)假設明文為乙個整數73
則通過rsa加密後為
73^7%10403=7716
(2)還原出7716的原文
7716^8743%10403=73。
下面是杭電oj上一道關於rsa的題目,題目中給出p,q和e的值,並給出一些加密之後的密文。要求還原出原來明文。題描述可參見
下面是對rsa演算法加密的密文進行還原的c**
#includeint main()
while(l--)
printf("%c",result);
}printf("\n");
}return 0;
}
從上面的程式中可以看出,在還原明文中最重要的是計算出d的值。rsa演算法在加解密過程都需要進行冪運算,現在為了rsa演算法的安全,p和q的值一般都在100位以上的素數,相應的d和e的值也會變的很大,因此rsa演算法的運算速度將會很慢。
RSA加密演算法
素數是這樣的整數,它除了能表示為它自己和1的乘積以外,不能表示為任何其它兩個整數的乘積。例如,15 3 5,所以15不是素數 又如,12 6 2 4 3,所以12也不是素數。另一方面,13除了等於13 1以外,不能表示為其它任何兩個整數的乘積,所以13是乙個素數。素數也稱為 質數 二 什麼是 互質數...
RSA加密演算法
一 rsa是公鑰加密演算法之一,該演算法的數學基礎是 1 初等數論的euler定理,即 若整數a與整數n互素,則a n 1 mod n 其中,n 為尤拉函式。2 大整數分解很困難,即給定乙個大整數n,將其分解為n p q,兩個素數乘積十分困難。二 rsa基本原理 1 金鑰的生成。選擇大素數p,q,計...
RSA加密演算法
因偶然的機會,幫學長去在js中找乙個函式的實現方式,於是費了些力氣幫他找到了函式的實現 rsa.setpublic p,k var enkey rsa.encrypt njsessid 要找的是setpublic和encrypt的實現方式,但實際上這兩個函式呼叫的是crypt.min,js func...