扩展欧几里得求解逆元、RSA中公私钥(利用矩阵快速无脑求解)

本文通过一个RSA密码体制的例子,详细介绍了如何利用扩展欧几里得算法求解模逆元,即公钥与私钥的关系。通过辗转相除法,求得了7在模60下的逆元,进而解密密文。这种方法适用于解决RSA等加密算法中求解逆元的问题,强调了暴力求解的重要性。
摘要由CSDN通过智能技术生成

情景引入:  

        先来看这样一道例题:在使用RSA密码体制中,如果截获了发送给其他用户的密文c=10,若此用户的公钥为e=7,n=77,请问明文的内容是什么?

        通过学习RSA,我们可以得到以下信息:

                两个素数:p=7,q=11;

                n=p*q=7*11=77;

                φ(n)=(p-1)*(q-1)=60;

                公钥e=7,

                则公私钥的关系是e*d=1mod φ(n)。 7 * d = 1 mod 60。

        这个问题可以转化为求解模逆元的问题。

        多的不谈,这篇文章只是单纯的简单粗暴求解逆元。利用到的原理是扩展欧几里得算法。给予二个整数a、b,必存在整数x、y使得ax + by = gcd(a,b)如果a,b互素,并且a>b,求解的y就是b的逆元。

求解过程:

       在本题中,式子是 60x + 7y = 1, 求出的y就是7的逆元(私钥),利用辗转相除法,求解方程。

        \binom{7}{4}=\binom{0,1}{1,-8}*\binom{60}{7}      60=7*8+4;      4=1*60+(-8)*7

        \binom{4}{3}=\binom{0,1}{1,-1}*\binom{7}{4}        7=4*1+3 ;       3=1*7+(-1)*4

        \binom{3}{1}=\binom{0,1}{1,-1}*\binom{4}{3}        4=3*1+1;        1=1*4+(-1)*3

        \binom{1}{0}=\binom{0,1}{1,-3}*\binom{3}{1}        3=1*3+0;        0=1*3+(-3)*1

将上述式子从上到下依次代入,得到以下式子。

        \binom{1}{0}=\binom{0,1}{1,-3}*\binom{0,1}{1,-1}*\binom{0,1}{1,-1}*\binom{0,1}{1,-8}*\binom{60}{7}

        

        根据矩阵运算,算出\binom{1}{0}=\binom{2 , -17}{-7 , 60}*\binom{60}{7},根据60*x+7*y=1的形式,左侧矩阵第一行的1可以通过右侧的矩阵运算得到,1=2*60+7*(-17)。所以-17就是7的逆元,转为正数就是 60 - 17 =43,43是7的逆元。

       

         通过上述计算,发现规律了吗?

        第一列是矩阵形式,第二列是辗转相除法,第三列是第二列变形。等号右边的矩阵总是\binom{b}{r}=\binom{0,1}{1,-p}*\binom{a}{b}的形式,a/b=p余r。最终可以化简成这种形式\binom{1}{0}=\binom{x , y}{u , w}*\binom{a}{b},y就是b的逆元。

再举个例子,30*d=1 mod 47,求解d。

首先构造  30x+47y=1。然后按照步骤暴力求解。

总结

        遇到类似RSA这种求解逆元问题(相乘模为1的问题),记住方法,暴力求解就对了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值