常见题目类型:
基本原理:
素数 模运算 定理
a+b mod n = (a mod n+b mod n) mod n
a-b mod n = (a mod n-b mod n) mod n
==a×b mod n = (a mod n×b mod n) mod n==(这个求模的结合律经常用于解密时简化大指数计算)
RSA数学原理
欧拉函数:
素数的欧拉函数值为该数本身减1
两个素数的积的欧拉函数结果是这两个数各自的欧拉函数值的积。
解密的证明:
已知:c = me mod n,则me=k*n+c
所以:c=me-k*n
同时:ed=k* Φ(n) +1
则解密过程为:
cd =(me-k*n)d mod n
=(med-#*k*n+…+ (k*n)d)mod n
=mkφ(n)+1mod n
=mkφ(n) m mod n
=1×m=m
注意理解m,c都是小于n的
计算
举例:p=5,q=3,明文M=2,写出RSA加密过程(公钥:(e,n)、私钥:(d,n))
n=pq=15;
φ(n)=(p-1)(q-1)=8;
加密:C=M^e mod n (e取和φ(n)互素的随意数,即和8互素的数,可以取e=3)
则C=2^3 mod 15=8
解密:M=C^d mod n
d需要满足模反:ed mod φ(n)=1
注:求d有三种方法:
① 凑数,尝试法
②扩展的欧几里得
【如此题】
3d-8k=1 ①
3d-2k=1 ② 8%3=2
d-2k=1 ③ 3%2=1 (交错着互模,剩下余数)
k=1=0代回③得d=1
d=1代回②得k=1
k=1代回①得d=3 …
③公式代入(也是尝试代数凑)
因为ed mod φ(n)=1
即ed-φ(n)*k=1;
*d=[φ(n)k+1]/e
不断带入k=1,2…,直到式子能整除,得出d.
【如此题】
k=1,d=3;
k=4,d=11;
(若要求e≠d,则取d=11)
则:公钥对:(3,15)
私钥对:(11,15)
加密:2^3 mod 15 =8;
解密:8^11 mod 15=2;(把8的11次方拆开运算)
加解密正确
RSA算法的安全性