RSA加密与解密
这里只是讲讲 R S A RSA RSA是怎么加密以及怎么解密。
加密与解密过程
采用 R S A RSA RSA的方法后可以得到一个公钥 ( n , e ) (n,e) (n,e)和私钥 ( n , d ) (n,d) (n,d)。
对于一个明文 a a a,我们把它加密得到 b b b, b = a e m o d n b=a^e~~mod~~n b=ae mod n。我们把 b b b,发给接收者,接收者把 b b b解密: a = b d m o d n a=b^{d}~~mod~~n a=bd mod n即可查看密文了。
那么 R S A RSA RSA是怎么做的呢?
首先我们任意选取两个质数 p , q p,q p,q,令 n = p q n=pq n=pq,然后求出 n n n的欧拉函数 r = ϕ ( n ) r=\phi(n) r=ϕ(n)。任选一个小于 r r r且与 r r r互质的数 d d d,求出 d d d在模 r r r意义下的逆元 e e e,然后组成公钥 ( n , e ) (n,e) (n,e)和私钥 n , d n,d n,d,最后销毁 p , q p,q p,q即可。
我们可以根据之前的方法解密: b d = a e d = a b^{d}=a^{ed}=a bd=aed=a可知此方法是正确的。
安全性
在攻击者已知 n n n和 e e e,如果他能求出 ϕ ( n ) \phi(n) ϕ(n)来,那么即可获得私钥 ( n , d ) (n,d) (n,d)了。又由于 ϕ ( n ) = ( p − 1 ) ( q − 1 ) \phi(n)=(p-1)(q-1) ϕ(n)=(p−1)(q−1),而 p , q p,q p,q对于攻击者是不可知的,那么他只能够去分解 n n n,那么只要 p , q p,q p,q足够大,耗费的时间就会是不可承受的。
我们看一道题来加深印象。
(CCPC-Final 2018)K - Mr. Panda and Kakin
题意: x x x是[1e5,1e9]的随机数, p p p是小于 x x x的最大素数, q q q是大于等于x的最小素数, n = p , c = f 2 30 + 3 m o d n n=p,c=f ^{2^{30}+3}~~~mod~~n n=p,c=f230+3 mod n,给 n n n和 c c c求 f f f。
题解
这个题就是一个裸的 R S A RSA RSA解密。我们在 n \sqrt{n} n附近找到 p , q p,q p,q,求出 ϕ ( n ) \phi(n) ϕ(n),令 e = 2 30 + 3 e=2^{30+3} e=230+3, d = e − 1 m o d ϕ ( n ) d=e^{-1}~~mod~~\phi(n) d=e−1 mod ϕ(n)。那么 c = f e m o d n c=f^e ~~ mod~~n c=fe mod n,就是所谓的密文了, f f f即为 c d m o d n c^{d}~~mod~~n cd mod n。