BUUCTF_Crypto_bbbbbbrsa

题目:给了一个文件名是pem的文件,一个py文件

打开:

 

 可以知道p,n

一开始我从py文件里面看到c是base32加密后再从最后面输出,以为c是通过base32解密出来的,但发现并没有结果,看到py里最后一项,我再用base64解密c,发现和最后给的一组数字相同,我猜测这一组数是c

再看py文件里面的e是怎么取的,发现是在(50000,70000)中随机取一个数,e要与phi的最大公约数为1,这只能爆破e将每一个在50000到70000里面的质数一一取出求出m,取出当中含有‘flag’字符的结果

代码:

import gmpy2
import libnum
import base64
import random
p = 177077389675257695042507998165006460849
n = 37421829509887796274897162249367329400988647145613325367337968063341372726061
c = 2373740699529364991763589324200093466206785561836101840381622237225512234632
q = n/p
phi = (p-1)*(q-1)
for e in range(50000,70000):
    if gmpy2.gcd(e,phi)==1:    
        d=gmpy2.invert(e,phi)
        m=pow(c,d,n)
        flag=libnum.n2s(m)
        if 'flag' in flag :
            print(flag)

得到结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值