RSA加密原理
RSA加密的数学原理
RSA加密基本基于欧拉函数。
互质
两个数没有1以外的公因数的整数称为互质,记作$gcd(a,b)=1$。
欧拉函数及其性质
欧拉函数(Euler's totient function),即 𝜑(𝑛),表示的是小于等于 𝑛和 𝑛 互质的数的个数。
欧拉函数$𝜑(𝑛$)具有以下性质:
1.若$n$为质数,则$𝜑(𝑛)=n-1$;
2.若$n=p\cdot q$,且$p$、$q$均为质数,则有$𝜑(𝑛)=(p-1) \cdot (q-1)=𝜑(p) \cdot 𝜑(q)$。
3.如果$gcd(a,n)=1$,则有$a^{φ(n)}≡1(\mod n)$。
逆元
已知$gcd(a,n)=1$,如果存在$b$使$a\cdot b≡1(\mod n)$,则称$b$为$a \mod n$的逆元,写作$a^{-1}$。
根据定理可以得知:
由于对1取任何大于1的数的模,结果都为1,因此有$(a\cdot a^{-1})\mod n=1$,即$a\cdot a^{-1}-1=k\cdot n$,或$a\cdot a^{-1} -k\cdot n=1$,其中k是任何符合条件的正整数。
且根据线性同余方程可以得到推论:当且仅当$gcd(a,n)=1$时,$a\mod n$的逆元$a^{-1}$存在且唯一。
RSA加密的步骤

计算公钥和私钥
选定2个保密的200位质数$p$、$q$,按以下步骤计算:
1.计算$n=p\cdot q$,$𝜑(𝑛)=(p-1)*(q-1)$。
2.选定任意系数$e$,满足$1<e<𝜑(𝑛)$,且$gcd(𝜑(𝑛),e)=1$。
3.计算$e \mod 𝜑(𝑛)$的逆元$d$。
4.以$(e,n)$为公钥,$(d,n)$为私钥。
加密和解密
1.加密使用公钥$(e,n)$:$c=m^e\mod n$
2.解密使用私钥$(d,n)$:$m=c^d \mod n$