RSA

RSA算法

  1. 选择两个大素数PQ
  2. 计算n=P×Qφ(n)=(P1)(Q1),其中φ(n)n的欧拉函数
  3. 选择整数e,满足1<e<φ(n),且gcd(φ(n),e)=1
  4. 计算d,满足de1(modφ(n)),其中de在模φ(n)下的乘法逆元
  5. e,n为公钥,d,n为私钥

密文:cme(modn)
明文:mcd(modn)

cd(modn)mde(modn)m1(modφ(n))(modn)mkφ(n)+1(modn)

欧拉定理
a,mN+,且gcd(a,m)=1,则有

aφ(m)1(modm)
其中,φ(m)称为对模m缩系的元素个数(欧拉函数)。
证明:
设与m互质的数为数列{bn}={b1,b2,,bφ(m)}。由于gcd(a,m)=1,故gcd(a,bi)=1,因此数列{An}={ab1,ab2,,abφ(m)}gcd(m,Ai)=1AiAj(modm),即有{bn}{An}元素一一对应,进而
i=1φ(m)Aiaφ(m)i=1φ(m)bii=1φ(m)bi (modm)aφ(m)1 (modm)

费马小定理
aNp为质数,则有

apa(modp)

证明:
a=1,显然有1p1(modp)
设当a=k,有kpk(modp)p|(kpk)成立。考虑a=k+1时,有
(k+1)p=i=0pCpiki=i=1p1Cpiki+kp+1

由于p|i=1p1Cpikikpk(modp),故
(k+1)p=i=1p1Cpiki+kp+1k+1 (modp)

根据数学归纳法,对aN,有apa(modp)成立,证毕。

RSA算法证明
mcd(modn)(me(modn))d(modn)med(modn)成立。由于ed1(modφ(n))ed=kφ(n)+1,即证mkφ(n)+1m(modn)成立。

  1. gcd(n,m)=1
    Euler Theoremmφ(n)1 (modn)mkφ(n)1 (modn)mkφ(n)+1m (modn)medm (modn)
  2. gcd(n,m)1
    由于n=pqn>m,令m=αp,其中1<α<q,可知
    gcd(α,q)=1Fermats Little Theorem(αp)q11 (modn)(αp)(q1)(p1)k(αp)αp (modn)

    又因φ(n)=(p1)(q1)ed=kφ(n)+1,进而
    (αp)edαp (modn)(αp)ed=βq+αp(αp)((αp)ed11)=βqαp|βqp|βqp|t

    t=γp,即有
    (αp)ed=γpq+αpmed=γn+mmedm (modn)
posted @   Miro'  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 感觉程序员要被 AI 淘汰了?学什么才有机会?
· MQTT协议发布和订阅的实现,一步步带你实现发布订阅服务。
· Dify开发必备:分享8个官方文档不曾解释的关键技巧
· 活动中台系统慢 SQL 治理实践
· “你觉得客户需要”是杀死TA的最后一根稻草 | IPD集成产品开发
点击右上角即可分享
微信分享提示