Java 第三方为什么公钥能加密却不能解密 RSA加密求助

如果有两个大数a,bab可能是一个计算机无法表示的大数,则(ab)%c的值如何计算

这里可以使用快速幂取模算法。

a=a%c; //预处理使得a处于c的数据范围之下 if((b&1)==1){ //1即是0001,判断个位是否是1.如果b的②进制位是1那么我们的结果是要参与运算的 b>>=1; //二进制的移位操作,相当于每次除以2用二进制看,就是我们不断的遍历b的二进制位

第一步选择两个不等质数p,q(实际密钥一般为1024位或2048位)

这里我们选择 61 和53。

第三步计算n的欧拉函数φ(n)

第五步,计算e对于φ(n)的模反元素d

第六步,將n和e封装成为什么公钥能加密却不能解密n和d封装成私钥。

加密使用 (323317),解密使用(32332723)。

第七步分析,私钥的获取

由六可以看出來为什么公钥能加密却不能解密和私钥的区别其实只是d,也就是说d的推导是否可以在已知ne的情况下推导出来。

由第五步要得出d,已知n,e。需要φ(n)

由第三部,要得出φ(n)需要p,q

而已知n=p*q。而n已知只需要分解n因子即可。

结论:只要n可以被分解公私玥加密即可被破解。

第仈步n可以被分解吗?

在本例中3233可以很快被破解,但是实际应用中两个大质数的积是不容易被分解出来的

是以下两个质数的乘积:

人類已经分解的最大整数(232个十进制位,768个二进制位)比它更大的因数分解,还没有被报道过因此目前被破解的最长RSA密钥就是768位。而RSA加密一般使用1024位或者2048位基本可以理解为不可破解

1,为什么公钥能加密却不能解密(n,e)加密

2,私钥(n,d)解密

推导,m = () %3233 在这里使用 必备知识六中的赽速幂取模,可以轻松得到答案m = 65。

略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略略

五,看得開心不如请作者喝瓶矿泉水~~

}

注意:RSA加密明文最大长度117字节解密要求密文最大长度为128字节,所以在加密和解密的过程中需要分块进行RSA加密对明文的长度是有限制的,如果加密数据过大会抛出如下

}

我要回帖

更多关于 为什么公钥能加密却不能解密 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信