RSA算法描述

本文详细介绍了RSA算法的密钥生成过程,包括选取大素数p、q,计算n和phi(n),选择整数e,以及求解私钥d。接着阐述了加密和解密的步骤,并通过数学证明了解密过程的正确性,涉及到Euler定理和模运算的性质。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

密钥生成

  1. 选取两个保密的大素数p、q
  2. n=p*q, ϕ \phi ϕ(n)= ϕ ( p ) ϕ \phi(p)\phi ϕ(p)ϕ(q)=(p-1)(q-1)
  3. 随机选取整数e,1<e< ϕ \phi ϕ(n),满足gcd(e, ϕ \phi ϕ(n))=1
  4. ed ≡ 1 m o d ϕ \equiv1mod\phi 1modϕ(n),即d=e-1mod ϕ \phi ϕ(n)
  5. 公钥为(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)
    从而求得密钥对

加密

  1. 按ASCII码将明文m转换为二进制01比特串
  2. 将01比特串分组,使得每组转换为十进制时小于n
  3. 将各组转换为十进制
  4. 利用公钥e加密每组,得到密文c.即c ≡ \equiv memodn,0 ≤ \leq m<n,0 ≤ \leq c<n

总结

  • 消息转换为二进制序列,按模数将二进制序列分组,再转换为十进制。经过转换–>分组–>转换是为了加密时m不能超过模数。

解密

  1. m ≡ \equiv cdmodn

证明解密过程是正确的

  1. 计算cdmodn是否同余m
  2. ∵ \because c ≡ \equiv memodn,ed ≡ 1 m o d ϕ \equiv1mod\phi 1modϕ(n); ∴ \therefore cdmodn=medmodn=m1+rϕ(n)modn
  3. 下面分两种情况讨论
    (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时同理
  4. 综上所述,解密过程是正确的

总结

  • 要证明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时同理
  • 综上所述,解密过程是正确的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值