1. 程式人生 > 其它 >rsa加密相關基礎知識(1)

rsa加密相關基礎知識(1)

RSA 基本原理:

選取兩個不同的大素數p、q,並計算N=p*q,選取小素數d,並計算e,使d*e % (p-1)(q-1)=1,
對於任意A<N:
若B=A**d % N
則A=B**e % N

可見d、e形成了非對稱祕鑰關係,加密者用公鑰d加密,解密者可用私鑰e解密,第三者即使攔截了密文B、公鑰d和N,在不知道p、q的前提下,無法推算出e,從而無法獲得明文A。當N取非常大的值時,將其因式分解成p、q是非常困難的,例如當N為1024 bit時,據分析,需動用價值數千萬美金的大型計算機系統並耗費一年的時間。

 

質數與互質關係:

質數又稱素數,指在大於1的自然數中,除了1和它本身以外不再有其他因數的自然數。

互質關係:兩個正整數,除了1以外,沒有其他公因子,我們就稱這兩個數是互質關係(coprime)

  1.任意兩個質數構成互質關係,比如13和61。

  2. 一個數是質數,另一個數只要不是前者的倍數,兩者就構成互質關係,比如3和10。

  3. 如果兩個數之中,較大的那個數是質數,則兩者構成互質關係,比如97和57。

  4. 1和任意一個自然數是都是互質關係,比如1和99。

  5. p是大於1的整數,則p和p-1構成互質關係,比如57和56。

  6. p是大於1的奇數,則p和p-2構成互質關係,比如17和15。

 

尤拉函式:任意給定正整數n,計算在小於等於n的正整數之中,有多少個與n構成互質關係。計算這個值的方法叫做尤拉函式。以φ(n)表示。如φ(6)=2,因為在1到6之中,與6形成互質關係的有1,5。

尤拉函式的計算分為5種情況:

  1. n=1,φ(1)=1

  2.n是質數,φ(n)=n-1.質數與每個小於它的數都構成互質關係

  3.n是質數的k次方,比如n=p^k, p是質數。φ(n)=p^k-p^(k-1)。在小於等於n的數字中,只有不包含因數p的數字才能與n互質。包含p的數字為 1*p,2*p,3*p。。。p^(k-1)*p 一共有p^(k-1)個。

  4. n是兩個質數的乘積,n=a*b, φ(n)=φ(a)*φ(b)

  5.任意大於1的整數都可以拆成一系列質數的乘積。此時φ(n)=n*(1- p1^-1)(1-p2^-1)...(1-pn^-1). 可通過情況3與情況4推匯出來。

尤拉定理:

兩個正整數a和n互質,則n的尤拉函式φ(n)可以讓下面的式子成立: aφ(n)≡1 (mod n)

如果n為質數則 an-1≡1(modn). 此為費馬小定理

 

模反元素:

如果兩個正整數a和n互質,那麼一定可以找到整數b,使得 ab-1 被n整除。即 ab≡1(modn) .可用尤拉定理證明b一定存在