BUUCTF-crypto-刷题记录(2020.11.25)

本文记录了两道RSA加密题目,包括'Dangerous RSA'和'Basic RSA'的解题思路。在'Dangerous RSA'中,由于小指数e=3,利用低加密指数攻击进行爆破解密。而在'Basic RSA'中,通过给定的原始数据直接计算出私钥d,从而解密获取flag。两题的解密过程均结合了数学原理和编程实现。

Dangerous RSA

题目:
在这里插入图片描述
解题思路:
因为e=3,很小,所以这是rsa的低加密指数攻击,所以直接使用python写一个爆破代码来解出明文。
数学依据:
假设我们  M^e / n 商 k 余数为c,
所以M^e = kn + C,对k进行爆破,只要k满足 k*n + C能够开方就可以
代码如下:



from gmpy2 import iroot
import libnum
n = 0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793

c = 0x10652cdfaa6b63f6d7bd1109da08181e500e5643f5b240a9024bfa84d5f2cac9310562978347bb232d63e7289283871efab83d84ff5a7b64a94a79d34cfbd4ef121723ba1f663e514f83f6f01492b4e13e1bb4296d96ea5a353d3bf2edd2f449c03c4a3e995237985a596908adc741f32365

k = 0
while 1:
    res=iroot(c+k*n,3)
    if(res[1]==True):
        print(libnum.n2s(int(res[0])))
        break
    k=k+1


flag为flag{25df8caf006ee5db94d48144c33b2c3b}

basic rsa

题目:
在这里插入图片描述
解题思路:
题目给了一个py文档,打开了发现有原始数据p,q,e,c,所以可以直接求出n,d,从而求出m
代码如下:

import gmpy2
from Crypto.Util.number import *
p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551
e = 65533
c = 27565231154623519221597938803435789010285480123476977081867877272451638645710
n = p*q
phi = (p-1)*(q-1)
d = gmpy2.invert(e,phi)
m = pow(c,d,n)
print(long_to_bytes(m))

得到的flag是:
flag{B4by_Rs4}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值