非对称加密的数学原理

第一步,取两个互质的整数 p,q(就是两个数除了一个公共因子1外就没有其他的公共因子了)
在这里我取p=3,q=5

第二步 取s作为p和q的乘积
所以 s=p*q=15 

取s1作为(p-1)和(q-1)的乘积
所以s1=2*4=8  (这个s1就是公钥和私钥的组成成分之一)

接下来在区间(1,s1)之间取一个与s1互质的整数e
这里我取e为3 (这个e就是公钥的组成成分之一)

根据公式(e*d)mod(s1)=1 求出d的值
3*d mod 8=1 解的到d可取3.(这个d就是私钥的组成成分)

所以我们就解得了
公钥(s,e)=(15,3)
私钥(s,d)=(15,3)
加密过程:
对数字m用公钥(s,e)进行加密得到密文t:   (s,e)=(15,3),为简单起见设m=7
m^e mod s =t 
所以7^3 % 15=13 ==》t=13

解密过程:
对密文t用私钥(s,d)进行解密得解密文m'
t^d mod s=m'
13^3 % 15=7 
所以m'=m=7,加密后的密文可以被顺利解密

最后我们看看通过公钥是否可以找到一把对应的私钥

首先列举上面我们已经提到过的参数
质数 p,q
两质数乘积 s (s=p*q)
中间数s1 (s1=(p-1)*(q-1));
公钥的组成成分e    私钥的组成成分d

现在我们罗列下相应的数学关系式
s=p*q  (p,q两个数互为质数)
s1=(p-1)*(q-1)
e*d %s1=1 (1<e<s1且与s1互为质数)

现在已经知道公钥(s,e),看看能否得到私钥成分d
要求到d,必须要求到s的两个质数q,p。

但是q和p这两个质数能够从s中分解出来吗,事实上,数值小的s能
被分解,随着数值s越来越大,分解成两个质数的难度也越来越大,
理论上以现阶段的的计算能力,RSA算法被破解的可能性为0.

例如s=1347318956317465198736981346571346759136498561347
341876534865239745634629384658293765293402340523485632
324593465938746598340234752384750923847523845723084572
613946237965139846136236473649182736481329613769238761
1236498134751305713752937513075283753104570381571232……
然后如何将其分解为一对互质的p和q呢?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

会发paper的学渣

您的鼓励和将是我前进的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值