RSA加密算法正確性證明


RSA加密算法是利用大整數分解耗時非常大來保證加密算法不被破譯。

密鑰的計算過程為:首先選擇兩個質數p和q,令n=p*q。

令k為n的歐拉函數,k=ϕ(n)=(p−1)(q−1) 

選擇任意整數a,保證其與k互質

取整數b,使得a*b ≡1mod k

令公匙為a和n。私匙為p,q,b。

加密時算法為:

例如所發數位x,則所發過去的數據為 o = x^a mod n

解碼時將可以得到x = o^b

正確性證明(1):ϕ(n)=(p−1)(q−1) 成立的正確性

ϕ(n)表示小於n且與n互質數的個數

則小於等於n且與n非互質的數的個數為,n-ϕ(n) = n - (p-1)*(q-1) = n - (pq-q-p+1) = n-n+p+q-1 = p+q-1

所以只要證明小於等於n且與n非互質的數的個數為p+q-1即能證明ϕ(n)=(p−1)(q−1) :

這點很容易證明,由於n只有兩個素因子p,q。則所有與n非互質的數都可以寫成p*x或q*x,對於p*x來講,x的取值范圍為1<=x<=q,對q*x來講x的取值范圍為1<=x<=p,p*x與q*x的唯一交集為p*q,所以結論成立。

加密解密算法的正確性即能保證x = (x^a)^b

了解此部分正確性首先要了解群論

由a,b的描述可知b為a在模n乘法群當中的逆元,模n乘法群的規模為ϕ(n),x^imodn形成一個模n乘法群的循環子群,一個群的子群的規模必為該群的約數(證明見拉格朗日定理)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM