Crypto RSA

What’s RSA?

知识准备

  1. RSA算法: https://www.anquanke.com/post/id/87105
  2. CTF中常用的RSA解题:https://www.k2zone.cn/?p=2157

    题目描述

    题目给了两个文件,其中一个是后缀为.pem的RSA私钥文件,另一个是被加密的flag文件

    题目分析

    这是一道RSA入门题目,直接给出了私钥和加密文件。
  3. 有了私钥,直接解密文件即可,使用openssl工具(在Ubuntu里安装sudo apt-get install openssl即可)进行解密。
    命令:openssl rsautl -decrypt -in flag.encrypt -inkey rsa_private_key.pem -out flag.txt
    意思是在flag.encrypt文件中用rsa_private_key.pem解密,生成flag.txt解密后的文件。
  4. 打开flag.txt即可找到flag。

RSA2

题目描述

题目给了后缀名为.pem的公钥文件和加密文件flag.encrypt

题目分析

这道题目有两种解题思路:flag文件是被私钥加密,需要用公钥解密;另一个是flag文件是被公钥加密,需要用私钥解密。使用上个题目中的命令,使用公钥解密,不对,所以这道题目应该是使用私钥加密的。

  1. 现在有了公钥,如何得到私钥?
    使用公钥得到n,知道n后分解得到p和q,再根据RSA算法解出d,得到私钥即可。
    公钥(e,n),私钥(d,n)。
  2. 使用命令:openssl rsa -pubin -text -modulus -in pubkey.pem
    得到modulus即为n(十六进制)

    转成十进制得到n:87924348264132406875276140514499937145050893665602592992418171647042491658461
  3. 用yafu工具(下载Windows版https://sourceforge.net/projects/yafu/ ,运行x64位的程序)分解n,得到p和q
  4. 用RSA-tool解出d
    d:2DB139DC7B9747A32312240AA11D7E8AA554BFA0BD5B981C0903667936609179E98FB1AA54141(十六进制)
    d:93076836824908620642628594590464850812511038475673825979968428923835223225430811644363358529
  5. 有了d和n,生成私钥
    需要下载pycrypto库,安装出错:
文章目录
  1. 1. What’s RSA?
    1. 1.1. 知识准备
    2. 1.2. 题目描述
    3. 1.3. 题目分析
  2. 2. RSA2
    1. 2.1. 题目描述
    2. 2.2. 题目分析