快乐地谈谈:关于RSA算法中求私钥d的欧几里得方法(辗转相除法)考试向的欸

这篇具有很好参考价值的文章主要介绍了快乐地谈谈:关于RSA算法中求私钥d的欧几里得方法(辗转相除法)考试向的欸。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于RSA算法本身,就提及一下,它是属于非对称密码体制.

基本的加密方式就如下图所示:

rsa私钥怎么求,看懂了就皮一下,算法,安全c为加密后的密文,m为加密前的明文

其中一般会给出公开密钥n、e的值,这样根据规则,便可以实现加密过程。而题目往往需要进行解密,那么就需要先求解出p、q,随后再求解出私钥d。但有时候题目还是友善的,会把p、q值告诉你,看你运气啦!

那么接下来,主要分成的两个部分内容:

一、求解p、q

首先,我们的题目往往是简单的,即易于破解的!

可以通过寻找最接近n值的一个数(a)平方,然后与 n 做差,如果差值刚好是某一个数(b)的平方数,那么根据平方差公式,可获两个数(a+b)以及(a-b),如果碰巧两个都是素数的话,好耶,问题解决!

若不行,那么继续选择(a+k)的情况,其中 k =1,2,3...再根据上述步骤进行分析就得,总会出来的,毕竟考试考得是方法。

详细的内容部分如下图所示啦:

rsa私钥怎么求,看懂了就皮一下,算法,安全

 二、在步骤一的基础上,求解密钥d

这里需要求解的公式就是:

其中  的值我们很容易就能获得

我们直接来看个例子

rsa私钥怎么求,看懂了就皮一下,算法,安全

例子中,最终求得的d值为1019.

这里我个人认为是分成三个部分来看的,不理解算法本身的话,那就学会观察

左上角运用是是欧几里得法(即辗转相除),如3200/79=40...60;79/60=1...19等等,可以发现就是不断地在让除数变成被除数,让余数变成除数,如此循环,知道余数为0.

而右上角的呢,实际上是在将左上角的等式进行转换,以此表示出每一个余数

好了,有了上述两个铺垫,那么就可以看最下面的式子了。

首先原本需要求解的问题中,mod 取余运算后等于1,那么我们就反过来,往回推

1=19-3*6 其中 3 我们可以用 3=60-19*3 表示,所以原式变成了 1=19-(60-19*3)

补充插曲:等式里面还有3,但不需要再一次代入了,根本原因等会儿说,从反面角度来说,继续代入只会无限死循环。同时,原式中的19 也可以直接代入,只不过也可以集中到接下来的一步在整体代入。

原式中 1=19-(60-19*3),接下来就处理19了,19=79-60*1,所以原式就等于

1=(79-60*1)-(60-(79-60*1)*3)

同理,再代入60,所以原式就等于

1=(79-(3220-79*40)*1) -((3220-79*40)-(79-3220-79*40)*3)

然后展开就能够获得

1=(-25)*3220+1019*79 

转变一下式子,也就是说1019*79/3220=25...1 由此就得到了私钥d!

好了,复盘一下,其实前面两步的铺垫,在我看来就是在寻找除数与商之间的乘积关系,而最后一步,借助的是逆向的思维方式,它在尽力的使1=19-3*6 这个式子不断回推,回推到寻找得到3220与79之间的关系,也就是说,回代的目的就是在构建3200与79的式子。而之前所提及为什么不需要无限回代3,就是因为3只是个中转站,只要和3220、79能够构建起关系就可以了。

总结下来就是,寻找关系(分解),回推,重新构建关系

希望能够帮到各位欸,纯粹的算法分析就不放在考试向的内容里啦!祝大家考试顺利,反正当时自己看懂了就很开森~

 文章来源地址https://www.toymoban.com/news/detail-757875.html

到了这里,关于快乐地谈谈:关于RSA算法中求私钥d的欧几里得方法(辗转相除法)考试向的欸的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RSA 2048位算法的主要参数N,E,P,Q,DP,DQ,Qinv,D分别是什么意思 哪个是通常所说的公钥与私钥 -安全行业基础篇5

    N(Modulus):模数,是两个大素数P和Q的乘积。N的长度决定了RSA算法的安全性。 E(Public Exponent):公钥指数,通常为65537(0x10001)。E用于加密数据,是公钥的一部分。 P(Prime Factor):素数P,是模数N的一个因子。 Q(Prime Factor):素数Q,是模数N的另一个因子。 DP(D mod (P

    2024年02月05日
    浏览(37)
  • 数论——欧几里得算法、裴蜀定理、扩展欧几里得算法 学习笔记

    最大公约数 最大公约数即为 Greatest Common Divisor,常缩写为 gcd。 一组整数的公约数,是指同时是这组数中每一个数的约数的数。 (pm 1) 是任意一组整数的公约数; 一组整数的最大公约数,是指所有公约数里面最大的一个。 特殊的,我们定义 (gcd(a, 0) = a) 。 最小公倍数 最

    2024年02月08日
    浏览(42)
  • 已知RSA的公钥(e,n)计算对应的私钥d

    今天分享一个软考中经常出现的关于RSA私钥计算的题目。我们试着理解背后的算法逻辑,然后再看看如何解题。 设在RSA的公钥密码体制中,公钥为(e, n)= (13, 35), 则私钥d= ()。  A. 17 B. 15 C. 13 D. 11 Rivest Shamir Adleman(RSA)加密算法是一种非对称加密算法,广泛应用于许多产

    2023年04月18日
    浏览(41)
  • C#.NET Framework RSA 公钥加密 私钥解密 ver:20230609

    C#.NET Framework RSA 公钥加密 私钥解密 ver:20230609   环境说明: .NET Framework 4.6 的控制台程序 。   .NET Framework 对于RSA的支持: 1. .NET Framework 内置只支持XML格式的私钥/公钥。如果要用PKCS1,PKCS8格式的,要用到三方库BouncyCastle。 2. .NET 中默认加密算法为“RSA/ECB/PKCS1Padding” ,要和

    2024年02月08日
    浏览(67)
  • C# .NET CORE .NET6 RSA 公钥加密 私钥解密

    环境说明: .NET CORE 版本:.NET 6 。   .NET CORE 对于RSA的支持: 1. .NET 6 中内置了对 PKCS1,PKCS8 2种私钥格式的支持。 2. 如果你要部署在Linux,docker ,k8s 中;一定要用 “RSA”这个类,不能是 .NET FRAMEWORK 的 RSACryptoServiceProvider。 3. .NET 中默认加密算法为“RSA/ECB/PKCS1Padding” ,要和JAVA互通

    2024年02月08日
    浏览(89)
  • Java RSA加解密-非对称加密-公钥私钥加解密(使用hutool工具)

    之前一篇帖子(https://blog.csdn.net/u014137486/article/details/136413532)展示了使用原生Java进行RSA加解密,本文介绍下使用当下流行的Hutool工具进行RSA加解密的用法。 目录 一、在Linux环境下生成公钥、私钥文件 二、将生成的公私钥文件导入项目中并移除pem文件的前后公私钥标记 三、po

    2024年04月23日
    浏览(90)
  • Exgcd(拓展欧几里得算法)的初步理解

    若a,b是整数,且 gcd(a,b)=d ,那么对于任意的整数x,y,ax+by都一定是d的倍数,特别地,一定存在整数x,y,使ax+by=d成立。它的一个重要推论是:a,b互质的充分必要条件是存在整数x,y使ax+by=1. 针对于一次不定方程 ax+by=c 进行求解,利用以上的裴蜀定理可以进行求解,当然要满足 gcd(a,b)|

    2024年02月16日
    浏览(32)
  • RSA加解密工具类(PKCS8公钥加密,PKCS1私钥解密)

    场景 :如果项目上生成的秘钥,公钥是PKCS8格式,私钥却是PKCS1格式。需要在这种场景加解密的话可以直接使用下面工具类。 特殊说明:私钥解密的时候必须把私钥源文件内容整个传入,不能删除私钥的文件头和文件尾,并且不能删除换行。

    2024年02月11日
    浏览(64)
  • 【数论】扩展欧几里得算法(EXTENDED-EUCLID)

    本文整理梳理了一些有关扩欧算法的内容,力求深入浅出便于理解,对一些作者在初次接触此算法时的不解(比如一些不是很好看出来的“易得”“显然”hh)通过数学形式呈现与推导。本文涉及的数学推导非常简单。代码均采用C++。 限于作者能力有限可能有些地方表述不清

    2024年02月17日
    浏览(37)
  • openssl3.2 - 检查rsa证书和私钥是否匹配(快速手搓一个工具)

    在学习openssl官方的/test/certs的脚本实现, 做到第30个脚本实验时, 发现根CA证书和key不匹配. 估计做实验时, 遇到脚本需要的文件, 就随便拷贝一个同名的文件过来, 导致证书和key不是一个脚本产生的, 所以不匹配 就想从前面的实验中, 找出匹配的证书和key来做实验, 肯定有啊. 这事

    2024年01月24日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包