RSA加密演算法

2021-06-12 07:26:09 字數 887 閱讀 2420

演算法的描述:

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...