RSA加密算法
- 参数设置(密钥生成)
a. 选择两个大素数 p p p, q q q
b. 计算 n = p ∗ q n=p*q n=p∗q
c. 计算 ϕ ( n ) = ( p − 1 ) ∗ ( q − 1 ) \phi(n)=(p-1)*(q-1) ϕ(n)=(p−1)∗(q−1) 这里用的是欧拉定理,这篇文章2.3情况4
d. 选择一个数 e , 1 < e < m e,1<e<m e,1<e<m,并且 g c d ( e , ϕ ( n ) ) = 1 gcd(e,\phi(n))=1 gcd(e,ϕ(n))=1
e. 计算 e e e在模 ϕ ( n ) \phi(n) ϕ(n)上的逆元 d d d,这里使用拓展欧几里得算法求 d d d
拓展欧几里得算法:对于 a a a, b b b互质,那么有 a x + b y = g c d ( a , b ) ax+by=gcd(a,b) ax+by=gcd(a,b), x x x, y y y在拓展欧几里得算法里面都是可以求出来的
这里对 e d ≡ 1 m o d ϕ ( n ) ed \equiv1 mod \phi(n) ed≡1modϕ(n)转换一下形式
e d ≡ 1 m o d ϕ ( n ) ed \equiv1 \mod \phi(n) ed≡1modϕ(n)
e d = 1 + k ∗ ϕ ( n ) ed =1+k*\phi(n) ed=1+k∗ϕ(n)
e d − k ∗ ϕ ( n ) = g c d ( e , ϕ ( n ) ) = 1 ed-k*\phi(n)=gcd(e,\phi(n))=1 ed−k∗ϕ(n)=gcd(e,ϕ(n))=1 - 加密
a. c ≡ m e m o d n c\equiv m^e \mod n c≡memodn - 解密
a. m ≡ c d ≡ m e d m o d n ≡ m 1 + k ϕ ( n ) ≡ m 1 m o d n m\equiv c^d\equiv m^{ed} \mod n\equiv m^{1+k\phi(n)} \equiv m^1 \mod n m≡cd≡medmodn≡m1+kϕ(n)≡m1modn欧拉定理 m ϕ ( n ) ≡ 1 m o d n m^{\phi(n)}\equiv 1 \mod n mϕ(n)≡1modn
b. 这里 n = p ∗ q n=p*q n=p∗q, n n n的因子只有 1 , p , q , n 1,p,q,n 1,p,q,n, m m m与 n n n互质