RSA加密、解密算法详解

本文详细介绍了RSA加密算法,包括密钥对的生成过程(选取素数、计算n和φ(n),选择e并求d),以及加密和解密的具体步骤。重点在于解决d值计算和大数次方运算的问题。
摘要由CSDN通过智能技术生成

RSA加密

一、密钥对的产生

1、选取两个素数p和q,

2、计算n=p*q。及n的欧拉函数值φ(n)=(p-1)*(q-1)

3、随机选取整数e,(1<e<φ(n)),且e和φ(n)的最大公约数为1。

4、求d。e*d=1modφ(n)。(下文有求d的一种简单算法)

5、形成密钥对。公钥{e,n},私钥{d,n}。

二、加密

加密使用公钥,c=m^e(mod n),m是明文、c是就是密文。

三、解密

解密使用私钥,m=c^d(mod n),m就是明文,c是密文。

案例详解

1、选取两个素数p和q,

       本次选取p和q分别为11,13。

2、计算n=p*q。及n的欧拉函数值φ(n)=(p-1)*(q-1)

        n=11*13=143。φ(n)=10*12=120。

3、随机选取整数e,(1<e<φ(n)),且e和φ(n)的最大公约数为1。

        e选取17,

4、求d。e*d=1modφ(n)。

        e*d=1modφ(n)。经过等式变换e*d - k *φ(n)=1。

将e和φ(n)带入等式。比较d和k系数哪个大,大数除小数取余,并且代替大数,再次进行判断、取余,直至其中一个系数为1。结束循环进入下一步

若是d的系数为1,令k=0,求d然后替代上一个等式的d值求k,然后逐步向上替代直至求出第一个等式的d。

若是k的系数为1,令d=1,求k替代上一个等式的k值求d,然后逐步向上替代,直至求出第一个等式的d。

代码逻辑如下:

while(1){
if(e>φ(n))
{
e=e%φ(n);
}
else
{
φ(n)=φ(n)%e;
}
if(e==1)
{
k=0;
break;
}
else(φ(n)==1)
{
d=1;
break;
}
}

具体算法如下图所示

本方式分为两种情况,

5、形成密钥对。公钥{e,n},私钥{d,n}。

公钥{17,143},私钥{113,143}。

1、对明文进行加密

明文 m=24

c=m^e=24^17=7(mod 143)

2、密文进行解密 

密文 c=7

m=c^d=7^113=24(mod 143)

小结

在RSA加解密算法中,有两个难点,第一就是d值的计算,我们需要找到合适方法进行快速计算出d值。其二就是在加解密中次方的值是非常大,我们同样需要找到合适方法进行快速计算。在计算过程中保证不出错。公钥加密,私钥解密,加解密的时候不要用错。

欢迎指错!!!

  • 25
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

无_欲

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

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

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

打赏作者

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

抵扣说明:

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

余额充值