rsa基础
rsa概述
m 明⽂
c 密⽂
p、q 素数
e 公钥
d 私钥
n=p*q
rsa算法核心公式
加密
c = ( m e ) m o d n c=(m^e)modn c=(me)modn
解密
m = ( c d ) m o d n m=(c^d)modn m=(cd)modn
rsa加密具体过程
1.任意找出两个整数q和p(q,p互素),计算n
n = p × q n=p\times q n=p×q
2.计算欧拉函数
φ ( n ) = ( p − 1 ) × ( q − 1 ) \varphi(n)=(p-1)\times(q-1) φ(n)=(p−1)×(q−1)
3.公钥e
1 < e < φ ( n ) 1<e<\varphi(n) 1<e<φ(n)
( e , φ ( n ) ) = 1 (e,\varphi(n))=1 (e,φ(n))=1
4.私钥d
e d ≡ 1 m o d φ ( n ) ed\equiv1\ mod\ \varphi(n) ed≡1 mod φ(n)
rsa的数学证明
证明欧拉定理
欧拉函数:
在数论,对正整数n,欧拉函数是小于等于n的正整数中与n互质的数的数目。
完全余数集合:
定义小于n且和n互质的数构成的集合为Zn,称呼这个集合为n的完全余数集合。
根据定义显然有
∣ Z n ∣ = φ ( n ) |Zn|=\varphi(n) ∣Zn∣=φ(n)
当n满足条件
n = p × q n=p\times q n=p×q
推得
Z n = { 1 , 2 , 3 ⋯ , n − 1 } − { p , 2 p ⋯ , ( q − 1 ) p } − { q , 2 q ⋯ , ( p − 1 ) q } Zn=\{1,2,3\cdots,n-1\}-\{p,2p\cdots,(q-1)p\}-\{q,2q\cdots,(p-1)q\} Zn={
1,2,3⋯,n−1}−{
p,2p⋯,(q−1)p}−{
q,2q⋯,(p−1)q}
可得
φ ( n ) = n − 1 − ( q − 1 ) − ( p − 1 ) = ( p − 1 ) × ( q − 1 ) \varphi(n)=n-1-(q-1)-(p-1)=(p-1)\times(q-1) φ(n)=n−1−(q−1)−(p−1)=(p−1)×(q−1)
欧拉定理:
a φ ( n ) ≡ 1 m o d n a^{\varphi(n)}\equiv1\ mod\ n aφ(n)≡1 mod n
证明
令
Z n = { X 1 , X 2 ⋯ , X n } S = { a X 1 m o d n , a X 2 m o d n ⋯ , a X φ ( n ) m o d } Zn=\{X_{1},X_{2}\cdots,X_{n}\}\\ S=\{aX_{1}mod\ n,aX_{2}mod\ n\cdots,aX_{\varphi(n)}mod\} Zn={
X1,X2⋯,Xn}S={
aX1mod n,aX2mod n⋯,aXφ(n)mod}
因为
( a , n ) = 1 ( X i , n ) = 1 ( 1 ≤ i ≤ φ ( n ) ) (a,n)=1\\ (X_{i},n)=1(1\leq i \leq \varphi(n))