crypto buuctf rsa2

解压

已知e,n,dp,c

列举出来将要用到的几个公式

c=m^e mod n

m=c^d mod n

ϕ(n)=(p−1)∗(q−1)

d∗e=1 mod ϕ(n)
dp=d mod (p−1)

求m,已知c,n,即求解d

d=gmpy2.invert(e,ϕ(n))

dp*e=e*d mod (p-1)

得1式:e*d=k(p-1)+dp*e

e*d=1 mod ϕ(n)

得2式:e*d=K(p-1)(q-1)+1

由两式,得:

k(p-1)+dp*e=K(p-1)(q-1)+1

(p-1)(K(q-1)-k)+1=dp*e

令K(q-1)-k=x,则:

(p-1)x+1=dp*e

因dp=d mod (p-1) 所以 dp<p-1

所以x<e,

根据x的范围,在(1,e)区间内,进行脚本遍历

import gmpy2
e = 65537
n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657

c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751
for x in range(1, e):
    if(e*dp%x==1):
        p=(e*dp-1)//x+1
        if(n%p!=0):
            continue
        print(p)

可得到p

根据n=p*q,求出q

ϕ(n)=(p−1)∗(q−1),求出ϕ(n)

d=gmpy2.invert(e,ϕ(n)),求出d

m=c^d mod n求出m

import gmpy2
e = 65537
n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657
p = 13468634736343473907717969603434376212206335187555458742257940406618189481177835992217885676243155145465521141546915941147336786447889325606555333350540003
c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751
q = n//p
u =(p-1)*(q-1)
d = gmpy2.invert(e,u)
m = gmpy2.powmod(c,d,n)
print(m)
print(hex(m)[2:])
print(bytes.fromhex(hex(m)[2:]))

运行,得flag{wow_leaking_dp_breaks_rsa?_98924743502}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: buuctf crypto rsarsa 是一个密码学竞赛中的题目,涉及到 RSA 加密算法。RSA 是一种非对称加密算法,常用于数据加密和数字签名。在该题目中,可能需要对 RSA 加密算法的原理和实现进行深入的研究和分析,以解决加密和解密的问题。 ### 回答2: BUUCTF是一个针对计算机安全领域的技能竞赛,旨在提高选手的安全防护意识和技术能力。其中涉及的加密算法RSA在密码学中属于非对称加密算法,其加密过程中需要用到两个密钥,一个是公钥,一个是私钥。在加密过程中,公钥用于加密明文,而私钥则用于解密密文。因此,RSA算法的安全性取决于私钥的保护,若私钥泄漏,则加密数据不再安全。 在BUUCTFRSA题目中,选手需要利用给定的RSA公钥、密文等信息来解密出原始明文。首先,选手需要对给定的公钥进行分解,以求出两个大质数p和q,并计算出n=p*q。然后选手需要求出一个整数e,使得e与(p-1)*(q-1)互质。选手需要利用扩展欧几里得算法求出一个整数d,使得d*e mod (p-1)*(q-1)=1。最后,选手就可以利用求得的d,将密文解密为原始明文。 在针对RSA算法的攻击方法中,通过枚举计算或利用数学上的漏洞,攻击者可以猜测出素数p和q的值,推导出解密私钥,并进一步利用私钥进行加密和签名等操作,从而窃取数据和获得系统控制权。因此,选手需要具备RSA算法的基本理论知识和常用攻击方法,并掌握实际应用中的RSA加密、解密及签名等操作。只有建立起一个扎实的RSA算法基础,才能在BUUCTF竞赛中成功击败其他选手。 ### 回答3: buuctf crypto rsarsa是一个密码学竞赛中的一个题目,旨在测试参赛者对于RSA算法的理解和应用能力。 RSA算法是目前最为常用的公钥加密算法之一,它的安全性基于质因数分解问题。在加密时,通过选择两个足够大的质数p和q,将它们相乘得到一个大的合数n,然后选择一个整数e作为公开密钥,满足e和(p-1)(q-1)互质。接着,选取一个整数d作为私有密钥,使得e*d mod (p-1)(q-1) = 1。然后,任何人都可以通过公开密钥(e,n)将明文m进行加密,得到密文c = m^e mod n。而只有知道私有密钥(d,n)的人才能够将密文c进行解密,得到明文m = c^d mod n。 在这道buuctf crypto rsarsa题目中,我们需要破解一个RSA加密过的密文,得到原始明文。题目给出了一个密文c和公钥(e,n),但是并没有给出私钥d。首先,我们需要对n进行质因数分解,求出p和q。这里我们可以使用Pollard-Rho算法或是其他的质因数分解算法。一旦我们求出了p和q,我们就能够计算出(p-1)(q-1),并通过扩展欧几里得算法求出私钥d。然后,我们就可以使用私钥d来解密密文得到明文了。 需要注意的是,在实际应用中,RSA算法需要保证选择的质数p和q足够大,才能够抵御当前已知的攻击手段。同时,在实现中还需要注意一些常见的安全漏洞,例如使用相同的公开指数e等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值