密钥生成
- 选取两个保密的大素数p、q
- n=p*q, ϕ \phi ϕ(n)= ϕ ( p ) ϕ \phi(p)\phi ϕ(p)ϕ(q)=(p-1)(q-1)
- 随机选取整数e,1<e< ϕ \phi ϕ(n),满足gcd(e, ϕ \phi ϕ(n))=1
- ed ≡ 1 m o d ϕ \equiv1mod\phi ≡1modϕ(n),即d=e-1mod ϕ \phi ϕ(n)
- 公钥为(e,n),私钥为d
总结
- 由两个大素数计算出n,有了n才能求出密钥对。
求公钥:计算出n的欧拉函数值 ϕ ( n ) \phi(n) ϕ(n) ,根据1<e< ϕ \phi ϕ(n),gcd(e, ϕ \phi ϕ(n))=1的条件随机选取整数e。
e大于1是因为小于1无意义,等于1就导致公钥为1,当别人看到公钥为1就知道私钥也为1了,所以要大于1;
e小于 ϕ \phi ϕ(n)是因为模数为 ϕ \phi ϕ(n)
求e的这个条件gcd(e, ϕ \phi ϕ(n))=1是为了保证私钥d存在。
求私钥:d ≡ \equiv ≡e-1mod ϕ \phi ϕ(n)
从而求得密钥对
加密
- 按ASCII码将明文m转换为二进制01比特串
- 将01比特串分组,使得每组转换为十进制时小于n
- 将各组转换为十进制
- 利用公钥e加密每组,得到密文c.即c ≡ \equiv ≡memodn,0 ≤ \leq ≤m<n,0 ≤ \leq ≤c<n
总结
- 消息转换为二进制序列,按模数将二进制序列分组,再转换为十进制。经过转换–>分组–>转换是为了加密时m不能超过模数。
解密
- m ≡ \equiv ≡cdmodn
证明解密过程是正确的
- 计算cdmodn是否同余m
- ∵ \because ∵c ≡ \equiv ≡memodn,ed ≡ 1 m o d ϕ \equiv1mod\phi ≡1modϕ(n); ∴ \therefore ∴ cdmodn=medmodn=m1+rϕ(n)modn
- 下面分两种情况讨论
(1) gcg(m,n) = 1 时,根据Euler定理得mϕ(n) ≡ \equiv ≡ 1modn,m1+rϕ(n)modn=m(mrϕ(n))modn=m mod n
(2) gcd(m,n) ≠ \neq = 1时, ∵ \because ∵n=pq且p、q都是素数, ∴ \therefore ∴gcd(m,n)要么是p,要么是q.
设gcd(m,n)=p,令m=xp,1 ≤ \leq ≤x<q
能够推出gcd(m,q)=1,由Euler定理知mϕ(q) ≡ \equiv ≡ 1modq,又ϕ(q)=q-1 ⇒ \Rightarrow ⇒mq-1 ≡ \equiv ≡ 1modq ⇒ \Rightarrow ⇒(mq-1)r(p-1) ≡ \equiv ≡ 1modq ⇒ \Rightarrow ⇒
mrϕ(n) ≡ \equiv ≡ 1modq ⇒ \Rightarrow ⇒ mrϕ(n)=1+bq ⇒ \Rightarrow ⇒ m1+rϕ(n)=m+mbq=m+xpbq=m+xbn ≡ \equiv ≡ m mod n;
gcd(m,n)=q时同理 - 综上所述,解密过程是正确的
总结
- 要证明cdmodn是否同余m,这是一个转化的过程;
- cdmodn=medmodn=m1+rϕ(n)modn=m(mrϕ(n))modn
- 如果gcd(m,n)=1,Euler得mϕ(n) ≡ \equiv ≡ 1modn,则cdmodn=medmodn=m1+rϕ(n)modn=m(mrϕ(n))modn=mmodn
- 如果gcd(m,n)
≠
\neq
= 1,我们得往m(mrϕ(n))
≡
\equiv
≡ mmodn上凑,利用Euler定理凑,就得找互为素数的一对
因为n=pq,且p、q都是素数,况且m<n,所以公因子只能是p或者q;假设p为公因子,那么存在x,使得m=xp;由于m本来就比n小,而且公因子是p,所以q和m就不会整除关系,那么gcd(m,q)=1;由Euler定理知mϕ(q) ≡ \equiv ≡ 1modq,此时会想到等式左边往m(mrϕ(n))modn上凑,右边往m modn凑,右边也就是等于m+模数的倍数;
ϕ(q)=q-1 ⇒ \Rightarrow ⇒mq-1 ≡ \equiv ≡ 1modq ⇒ \Rightarrow ⇒(mq-1)r(p-1) ≡ \equiv ≡ 1modq ⇒ \Rightarrow ⇒
mrϕ(n) ≡ \equiv ≡ 1modq ⇒ \Rightarrow ⇒ mrϕ(n)=1+bq ⇒ \Rightarrow ⇒ m(mrϕ(n))=m+mbq=m+xpbq=m+xbn ≡ \equiv ≡ m mod n;
gcd(m,n)=q时同理 - 综上所述,解密过程是正确的