关于RSA的学习记录

RSA原理
RSA工作原理基于公钥私钥,定义:明文可以通过公钥计算后成密文,密文可以通过私钥计算后成明文。

思路,首先选取两个质数p,q,引入函数φ(n),代表的是小于n且与n互质的正整数,而对于质数而言,质数与小于自己的任何正整数互质,比如说7,与123456都是没有公因数,也就是互质。
在这个条件下,设n=pq,且φ(n)= φ§ φ(q),由上面得知,对于质数而言,质数与小于自己的任何正整数互质,所以φ§和φ(q)分别等于p-1,q-1,所以φ(n)= (p-1) (q-1)。
算出φ(n)后,需要找一个数a与n互质,其实很简单,就找一个小于p、q且大于1的数,因为n是pq相乘,且pq都是质数,所以n的因子就是1,p,q,n,很轻易可以找出一个数与n互质,此时由欧拉定理得出:a^φ(n) mod(n)=1
欧拉定理简单证明:
令Zn={x1,x2,x3,x4,……,xφ(n)},也就是小于n且与n互质的所有正整数,S={ax1 mod n, ax2 mod n …… a* xφ(n) mod n }其中a是与n互质的一个正整数
由于a与n互质,Zn里面所有数也与n互质,所以axi与n互质,很容易理解,多少个与n作为互质的因子相乘,最后是互质的,因为大家的因子没有相同的公因子(互质)。
由于xi每个都不相同,且a与n互质,这个情况下,
①a
xi mod n 与axy mod n,两边可以应用消去律,把a消去,剩下xi mod n 与 xy mod n显然,这两个是不一样的。
接下来,不妨开始验证,a^φ(n)x1x2
x3……xφ(n) mod n(前面是a的φ(n)次方并乘上小于n的所有互质的数)=(ax1)(ax2)(ax3)……(axφ(n))mod n =(ax1 mod n)(ax2 mod n)(ax3 mod n)……(axφ(n) mod n)mod n(这一步的变换是因为当x mod y = b,这个b无论再mod多少次y,结果都是b,因为是取余操作)=x1x2x3x4……xφ(n) mod n
(最后一步是根据上面①点,每个axφ(n) mod n结果都不相同,同时这个结果是一个小于n的质数,为什么呢,根据辗转相除法a、b是否互质,可以通过a mod b =c,然后看b与c是否互质,也就是反过来说,如果已经知道,a、b互质,也就是可以带出b与c必然互质,那么也就得出上面结论,由于a与n互质,且xφ(n)与n互质,那么a xφ(n)与n互质,那么a* xφ(n) mod n 就必然是小于n且与n互质的数,也就是Zn集合,所以最后是可以进行这样的转换)
最后由a^φ(n)x1x2x3……xφ(n) mod n = x1x2x3x4*……xφ(n) mod n两边约分x1到xφ(n),剩下a^φ(n) =1 mod n,也就是a^φ(n)取余n等于1
回归正题,在已有定理a^φ(n) mod(n)=1上两边乘以a,就有a^(φ(n)+1)=a mod n,而公私钥能找回明文,这里是最关键的一环,那怎么才能构建出两个式子(分别用于加密解密)才能符合这个式子呢?
请看这里,我们不得不佩服前人思维:我们令两个式子,
c=m^e mod n,m=c^d mod n,其中m是明文,n=pq,pq为两个不相等的随机质数(越大安全性越高)
由同余定理得 c=m^e + kn(因为c是m^e 除以n的余数,所以这个没问题),把
c=m^e + kn
代入m=c^d mod n,
得m=(me+kn)d mod n
由同余定理 m^(e
d) + (kn)^d +hn = m
移位得 m^(ed) + (kn)^d -m = hn (为了好看,因为h正负未知)
因为(kn)^d有n的因子,所以必定是 m^(e
d)-m 肯定是n的倍数,所以需要证明m^(ed)-m = 0 mod n
移位得m^(e
d) = m mod n (因为m是小于n,且与n互质,所以可以这样移位)
所以只需要e为d的模反元素
也就是符合ed=1mod(φ(n))
因为m和n互质,所以m^φ(n) = 1 mod n
两边同时y次方 (mφ(n))y = (1)y mod n
得m^(yφ(n))=1 mod n
两边乘以m :m^(y
φ(n)+1) = m mod n
此时已经看出来了,只需要e*d =yφ(n)+1(y为任意正整数)就可以达成了
至此已经达成RSA的算法数学依赖了,根据c=m^e mod n,m=c^d mod n,把e和n作为公钥公布,合作方利用e和n进行加密m,得到c然后己方用公式m=c^d mod n,得到m明文。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

暖汤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值