RSA2

Hello world,hello blog!

Posted by 吴柚 on April 17, 2019

题目分析

看到题目后,就知道这题和what’s RSA类似,但不同之处是这题给出的是一个公钥和加密文件。

思路有两种,一种是使用私钥进行加密,直接使用公钥进行解密即可;另一种是公钥加密,需要使用私钥进行解密,所以这种情况需要从公钥推导出私钥。

解题过程

首先尝试第一种情况,直接使用公钥对此文件进行解密。然而给出提示说需要私钥。

所以考虑第二种情况,首先需要将公钥内容打开;

rsa -in pubkey.pem -pubin -out pubkey.txt -text

得到public.txt的文件,打开后得到公钥的内容。

从公钥推导到私钥

RSA的原理

  1. 选择两个大的质数p、q,且这两个质数互不相等;

  2. 计算模 n = p q,n 的二进制的位数就是密钥的长度;

  3. 根据欧拉函数φ(n) = (p-1) (q-1),在1 和 φ(n)中间随机选择一个整数 e,e与φ(n)互为质数;

  4. 计算e对于φ(n)的模反元素d:e d ≡ 1 (mod φ(n)) 等价于 e d - 1 = k * φ(n),已知φ(n)、e,那么通过”扩展欧几里得算法”得出d 和 k。由此可以得到公钥和私钥。

推导的思想:

从公钥的内容中可以知道n,现在只需要知道d是什么,以及p、q的多种可能。

这里我们可以使用两个工具,一个是yafu-x64.exe,另一个是RSA-Tool。

使用yafu可以把n分解为p和q,,然后再使用RSA-tool得到d,最后就可以生成private.pem。

由public.txt中得到n的十进制为 87924348264132406875276140514499937145050893665602592992418171647042491658461

使用yafu得到p和q

使用RSA-Tool得到d

想通过p、q、n、e、d来推导出私钥,但是脚本运行错误,明天继续解决。