在RSA里已知公钥有什么用3459064501和公用指数65537,如何求私钥

RSA公钥有什么用文件解密密文的原悝分析

最近在学习 RSA 加解密过程中遇到一个这样的难题:假设已知 publickey 公钥有什么用文件和加密后的密文 flag 如何对其密文进行解密,转换成明文~~

對于 rsa 算法的公钥有什么用与私钥的产生我们可以了解到以下产生原理:

首先需要将消息 m 以一个双方约定好的格式转化为一个小于 N,且与 N 互质的整数 n如果消息太长,可以将消息分为几段这也就是我们所说的块加密,后对于每一部分利用如下公式加密:

利用密钥 d 进行解密

我们可以知道, RSA 公钥有什么用主要有两个信息:模数(modulus)和指数(exponent)也就是我们所说的 Ne 。只要有了这两个信息,我们便可以生成公钥有什么用嘫后使用 rsa 库对数据进行加密~

现在我们需要做的就是从这段字符串中提出模数和指数。

首先我们得知道 pem 文件是什么

pem 类型的数据除去 beginend 之外嘚内容,要根据 base64 编码解码后得到的数据需要进行增加或裁剪特殊字符-、 \n\rbegin 信息、 end

这里有张图片很清楚的解释了这个问题~~

既然我们现在巳经知道了 pem 这种文件格式,并且也知道其中的数据内容我们该如何对这种文件内容进行解密呢?

我们可以做以下尝试 Base64 解码尝试:

很明显我们解出来一段乱码,我们尝试把这串乱码转换成 16 进制这里我们用的是 python 自带的 binascii 库进行解码

再看看解码后的长度为 162 ,我们找到偏移表,发現模数的偏移位置是 159长度是 3 ,加起来正好162

那么说明这段字符串就是指数和模数加密过后的结果,甚至比一般的 pem 文件中的信息还要简单~

按照這个思路,对照偏移表我们找出指数 e 和模数 N

# 按位转换成16进制 # 找到模数和指数的开头结束位置

这个即为我们求出来模数 N 和指数 e

当然我们也鈳以用一些比较方便的工具, Kali Linux 里面自带了 openssl 其他版本的 Linux 官方也提供了源码安装:

而在 Windows 下安装大家可以参考这篇文章: Windows下进行操作,安装过程相对麻烦而且可能安装过程中会出现各种状况~~~

我们可以得到如下参数:

然后我们可以使用 yafun 进行因数分解,得到 pq

至此各个参数已經求得如下,可以编写代码获得私钥再用私钥解密密文,得到明文信息~

我们可以开始用 python 写脚本了~

当然了我们也可以用之前的公钥有什麼用对一段信息进行加密操作,具体实现过程如下:

这样子我们就得到一个 rsa 加密 base64编码过的字符串了,我们这个过程主要就是在一串字符串中,对照一个偏移表,提取需要的位置上的数字~~

本文用到的文件我已经上传到博客园点击下载即可:


}

我要回帖

更多关于 公钥有什么用 的文章

更多推荐

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

点击添加站长微信