羊城杯2024-TheoremPlus

开朗的网友 2024-10-31 16:12:57 24 0


decode 是在求 ,分两类讨论,为素数时,威尔逊定理等于-1,不为素数时是0

例外的当n=4,等于2

因此转变思路求素数的个数

接着n开方找近似p的下一个q就行,老套路了

from Crypto.Util.number import *
from gmpy2 import *
from sage import *
from tqdm import tqdm

'''n = 18770575776346636857117989716700159556553308603827318013591587255198383129370907809760732011993542700529211200756354110539398800399971400004000898098091275284235225898698802555566416862975758535452624647017057286675078425814784682675012671384340267087604803050995107534481069279281213277371234272710195280647747033302773076094600917583038429969629948198841325080329081838681126456119415461246986745162687569680825296434756908111148165787768172000131704615314046005916223370429567142992192702888820837032850104701948658736010527261246199512595520995042205818856177310544178940343722756848658912946025299687434514029951
c = 2587907790257921446754254335909686808394701314827194535473852919883847207482301560195700622542784316421967768148156146355099210400053281966782598551680260513547233270646414440776109941248869185612357797869860293880114609649325409637239631730174236109860697072051436591823617268725493768867776466173052640366393488873505207198770497373345116165334779381031712832136682178364090547875479645094274237460342318587832274304777193468833278816459344132231018703578274192000016560653148923056635076144189403004763127515475672112627790796376564776321840115465990308933303392198690356639928538984862967102082126458529748355566

e = 0
for i in tqdm(range(2,703440151+1)):
    if is_prime(i):
        e += 1

print(e)
'''
e = 36421875 - 2

n = 18770575776346636857117989716700159556553308603827318013591587255198383129370907809760732011993542700529211200756354110539398800399971400004000898098091275284235225898698802555566416862975758535452624647017057286675078425814784682675012671384340267087604803050995107534481069279281213277371234272710195280647747033302773076094600917583038429969629948198841325080329081838681126456119415461246986745162687569680825296434756908111148165787768172000131704615314046005916223370429567142992192702888820837032850104701948658736010527261246199512595520995042205818856177310544178940343722756848658912946025299687434514029951
c = 2587907790257921446754254335909686808394701314827194535473852919883847207482301560195700622542784316421967768148156146355099210400053281966782598551680260513547233270646414440776109941248869185612357797869860293880114609649325409637239631730174236109860697072051436591823617268725493768867776466173052640366393488873505207198770497373345116165334779381031712832136682178364090547875479645094274237460342318587832274304777193468833278816459344132231018703578274192000016560653148923056635076144189403004763127515475672112627790796376564776321840115465990308933303392198690356639928538984862967102082126458529748355566

p = iroot(n,2)[0]
q = next_prime(p)
p = n //q

assert is_prime(p) and p * q == n

phi = (p - 1) * (q - 1)
d = inverse(e, phi)
m = pow(c, d, n)
print(long_to_bytes(m))
分类:Crypto
image
作者:开朗的网友

5

提交

2

收入

相关WriteUP

  • 羊城杯2024-babycurve

    观察曲线的阶,存在一些小因子可以利用,因此使用PH+BSGS求出子群上的DLP,并爆破一些子群阶,即可得到key然后AES-CBC解密得到flag但是由于题目给出了曲线上的两个点,因此可以在GFp上解方程得到曲线参数观察曲线的阶,存在一些小因子可以利用,因此使用PH+BSGS求出子群上的DLP,并爆破一些子群阶,即可得到key然后AES-CBC解密得到flagfrom sage.all&...

    • Crypto
    • 21天前
  • 羊城杯2024-TH_curve

    题目实现了TwistedHessianCurve上的点加法与标量乘法参考CryptoCTF2023WriteUps|廢文集中區(maple3142.net)博客,即可实现从THcurve到Weierstrass型曲线的转换(主要分为曲线方程求解与曲线点映射两步)然后就是朴素的ecdlp求解,同样利用小子群阶实施PH+BSGS得到flagfrom Crypto.Util.number&nb...

    • Crypto
    • 21天前
  • 羊城杯2024-RSAloss

    给定n,c,通常情况下在无e情景中,应对明文做特殊限制,本题无其他信息,尝试在可见字符范围进行格规约,可转化为SVP问题,使用LLL算法求解即可。又不明确字符串长度,尝试爆破,然后手工选择一个具有语义的,发现为flagfrom Crypto.Util.number import *p = 898278915648707936019913202333...

    • Crypto
    • 21天前
问题反馈