Skip to content

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加密的步骤

image-20251210212654757

计算公钥和私钥

选定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\)