Bootstrap

RSA加密算法

RSA加密算法

参考这篇

  1. 参数设置(密钥生成)
    a. 选择两个大素数 p p p q q q
    b. 计算 n = p ∗ q n=p*q n=pq
    c. 计算 ϕ ( n ) = ( p − 1 ) ∗ ( q − 1 ) \phi(n)=(p-1)*(q-1) ϕ(n)=(p1)(q1) 这里用的是欧拉定理,这篇文章2.3情况4
    d. 选择一个数 e , 1 < e < m e,1<e<m e1<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) ed1modϕ(n)转换一下形式
    e d ≡ 1 m o d    ϕ ( n ) ed \equiv1 \mod \phi(n) ed1modϕ(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 edkϕ(n)=gcd(e,ϕ(n))=1
  2. 加密
    a. c ≡ m e m o d    n c\equiv m^e \mod n cmemodn
  3. 解密
    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 mcdmedmodnm1+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=pq n n n的因子只有 1 , p , q , n 1,p,q,n 1,p,q,n m m m n n n互质
;