攻防世界-Crypto-Normal_RSA

题目描述:下载附件后,附件中只有两个文件,一个是加密后的密钥,一个是公钥文件

背景知识:RSA加密算法

 现在相当于给出了密文和公钥,需要我们去求解明文

1. 思路分析

既然要解密,那么必须要获取私钥;

现在只有公钥,即只知道e和n,现在要想获取到私钥,那么不可避免的需要对n进行分解获取到p和q

分解到p和q后,计算出私钥,然后对密文进行解密即可

这个过程手工计算比较麻烦,整个过程主要利用一些工具进行操作,详细过程见第二步骤

2. 解题过程

2.1 利用openssl工具分解出e和modulus(这里应该就是那个n)

命令为:openssl rsa -pubin -text -modulus -in pubkey.pem

其中-pubin表示指定输入文件为公钥,-text表示以文本形式输出,-modulus表示输出模数值,-in表示输入文件。其余参数可以通过命令openssl rsa -help查看,这里就不赘述了。

2.2 利用进制转换工具将16进制转换为10进制

这里直接在网上搜索即可,这里我用的在线工具进制转换 - 在线工具

我们需要将modulus(n)转成10进制,转换后的结果为:87924348264132406875276140514499937145050893665602592992418171647042491658461

 2.3 分解该modulus(n)

在线网站:factordb.com 对modulus(n)进行分解,计算出p, q

 

p = 275127860351348928173285174381581152299 

q = 319576316814478949870590164193048041239

2.4 计算出私钥

结合前面的 e = 65537和p, q两个值,这里可以利用在线工具(这一步非必须,只是有介绍下这个工具)RSA visual and more - CrypTool Portal计算出了d的值为10866948760844599168252082612378495977388271279679231539839049698621994994673

生成私钥文件,这里使用rsatool工具来生成

工具安装命令:

git clone https://github.com/ius/rsatool.git
cd rsatool
python setup.py install

安装好后,执行命令:python rsatool.py -o private.pem -e 65537 -p 275127860351348928173285174381581152299  -q 319576316814478949870590164193048041239

 此时生成私钥文件private.pem

2.5 解密

 生成私钥文件后,使用openssl解密即可

openssl rsautl -decrypt -in flag.enc -inkey private.pem

其中-decrypt表示解密,-in表示输入的加密文件,-inkey表示输入的密钥

获取到flag为PCTF{256b_i5_m3dium}

 

总结:这个也是RSA算法的解密过程,这个过程如果使用人工计算,或者手动编程计算都比较难,因此,工具的利用就非常重要了,这里主要是用了三个工具:openssl/在线进制转换/rsatool工具,利用这些工具可以极大提升我们的效率

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值