• 2023年SWPU NSS 秋季招新赛 (校外赛道)WP—Crypto


    一、Caesar_base

    题目信息

    s = "HIJKLMNOPQRSTUVWXYZABCDEFGhijklmnopqrstuvwxyzabcdefg0123456789+/"    #码表
    
    def My_base64_encode(inputs):
    	bin_str = []
    	for i in inputs:
    		x = str(bin(ord(i))).replace('0b', '')
    		bin_str.append('{:0>8}'.format(x))
    	#print(bin_str)
    	outputs = ""
    	nums = 0
    	while bin_str:
    		temp_list = bin_str[:3]
    		if(len(temp_list) != 3):
    			nums = 3 - len(temp_list)
    			while len(temp_list) < 3:
    				temp_list += ['0' * 8]
    		temp_str = "".join(temp_list)
    		#print(temp_str)
    		temp_str_list = []
    		for i in range(0,4):
    			temp_str_list.append(int(temp_str[i*6:(i+1)*6],2))
    		#print(temp_str_list)
    		if nums:
    			temp_str_list = temp_str_list[0:4 - nums]
    			
    		for i in temp_str_list:
    			outputs += s[i]
    		bin_str = bin_str[3:]
    	outputs += nums * '='
    	print("Encrypted String:\n%s "%outputs)
    
    print("-------input 'ys' to encode-------")	
    
    sr = input("Please input!\n")
    if(sr == "ys"):
    	input_str = input("Please enter a string that needs to be encrypted: \n") 
    	My_base64_encode(input_str)            
      

    根据第一行新表base64解码即可

    二、EasyRSA

    题目附件

    import libnum  
      
    p=libnum.generate_prime(1024)  
    q=libnum.generate_prime(1024)  
    e=65537  
    m="NSSCTF{*******************}"  
    m=libnum.s2n(m)  
    n=p*q  
    phi_n=(p-1)*(q-1)  
    d=libnum.invmod(e,phi_n)  
    c=pow(m,e,n)  
      
    print("p=",p)  
    print("q=",q)    
    print ("e=",e)  
    print ("c=",c)
    
    #p= 122912801126049869009003839542545176400185213365268209105714006257803073428638629824801261702125287814910668428403367391355051987389837804474055637991864563803834741161217607848968821280710324766558457056004037592628178078680121173634128054936108782807954132605887275556228703383455969903056759874047110115433
    #q= 120790113700754477830062212762518406876786376726996249661848284428829412089402183812692045970711341815805796005449714738748110749559462448861357011272792817313060401380148108517705435100103533857957024851181447994572972501120774586405811257420853542417275740953525627232008812587423053626515513859653865873671
    #e= 65537
    #c= 7094224488947659163318199615533819770556597977720767621640224798887506152292861133457571683713587909779712343346370719403811813233693263526316785431883833118583425528830238629831001255198236686372518770451273159769779374149881346761523688131115323441973953523582174059584087249568245044443295176738493785560215046375056269378223045128094953923926250055718405799885041115025529297362914403732661935017257507786348635366480744933193471899621592092711962814949533564454932121056035003021428158830645604347966849572981124877683317022116903132719663958775850982016292384237647664448371811915879714093710876989697939277005

    基础RSA

    exp:

    import gmpy2
    from Crypto.Util.number import long_to_bytes
    p = 122912801126049869009003839542545176400185213365268209105714006257803073428638629824801261702125287814910668428403367391355051987389837804474055637991864563803834741161217607848968821280710324766558457056004037592628178078680121173634128054936108782807954132605887275556228703383455969903056759874047110115433
    q = 120790113700754477830062212762518406876786376726996249661848284428829412089402183812692045970711341815805796005449714738748110749559462448861357011272792817313060401380148108517705435100103533857957024851181447994572972501120774586405811257420853542417275740953525627232008812587423053626515513859653865873671
    c = 7094224488947659163318199615533819770556597977720767621640224798887506152292861133457571683713587909779712343346370719403811813233693263526316785431883833118583425528830238629831001255198236686372518770451273159769779374149881346761523688131115323441973953523582174059584087249568245044443295176738493785560215046375056269378223045128094953923926250055718405799885041115025529297362914403732661935017257507786348635366480744933193471899621592092711962814949533564454932121056035003021428158830645604347966849572981124877683317022116903132719663958775850982016292384237647664448371811915879714093710876989697939277005
    
    phi = (p-1) * (q-1)
    e = 65537
    n = p * q
    d = gmpy2.invert(e, phi)
    m = pow(c, d, n)
    print('💌:',long_to_bytes(m))
    #💌: b'NSSCTF{RSA_1s_so_ea3y_and_interest1ng!}'

    三、dpdp

    题目附件

    from Crypto.Util.number import *
    from libnum import *
    
    flag = b'NSSCTF{******}' + b'1010101010101010101010101010101010101010100010101010101010101010101101'
    p = getPrime(512)
    q = getPrime(512)
    n = p*q
    e = 65537
    d = inverse(e, (p-1)*(q-1))
    dp = d % (p-1)
    m = s2n(flag)
    c = pow(m, e, n)
    print(f'n = {n}')
    print(f'c = {c}')
    print(f'dp = {dp}')
    
    '''
    n = 62950660589752377241535942010457460675378335694404721223426371627802159493655570041534480026979837056215567303530448462076388942749116962945931432723672826148999814815864738069663127706046027850586024555861960247057288826014343547293035737544457656904257388300461848219257240252715837662741274235378360898441
    c = 26392919777656338278184497106215581599692023606797351841011065350738534402079717897589592521000832026751736045905247050532819571969784687491977953157313304550096179520376626220816081159472339787295872214912587497324709488986746768994907107727184468228540635002062232484115731701648311946527233449512543132274
    dp = 7088497034630351463006975624795947102639056977565074157092915907376477955247769847204254053775159112398217033648894620506901638351932922911273150932128973
    '''

    典型的dp泄露

    exp:

    import gmpy2 as gp
    e = 65537
    n = gp.mpz(62950660589752377241535942010457460675378335694404721223426371627802159493655570041534480026979837056215567303530448462076388942749116962945931432723672826148999814815864738069663127706046027850586024555861960247057288826014343547293035737544457656904257388300461848219257240252715837662741274235378360898441)
    dp = gp.mpz(7088497034630351463006975624795947102639056977565074157092915907376477955247769847204254053775159112398217033648894620506901638351932922911273150932128973)
    c = gp.mpz(26392919777656338278184497106215581599692023606797351841011065350738534402079717897589592521000832026751736045905247050532819571969784687491977953157313304550096179520376626220816081159472339787295872214912587497324709488986746768994907107727184468228540635002062232484115731701648311946527233449512543132274)
    for x in range(1, e):
        if(e*dp%x==1):
            p=(e*dp-1)//x+1
            if(n%p!=0):
                continue
            q=n//p
            phin=(p-1)*(q-1)
            d=gp.invert(e, phin)
            m=gp.powmod(c, d, n)
            if(len(hex(m)[2:])%2==1):
                continue
            print('--------------')
            print(m)
            print(hex(m)[2:])
            print(bytes.fromhex(hex(m)[2:]))
    #b'NSSCTF{CTFCTFNSSNSS}1010101010101010101010101010101010101010100010101010101010101010101101'

    四、close

    提示

    很接近
    hint1:p、q那么接近吗

    p/q接近类型

    附件信息

    from libnum import *
    from gmpy2 import *
    
    p=generate_prime(1024)
    q=next_prime(p)
    e=65537
    m='NSSCTF{*******}'
    m=s2n(m)
    n=p*q
    phi=(p-1)*(q-1)
    d=invmod(e,phi)
    c=pow(m,e,n)
    
    print("n=",n)
    print("e=",e)
    print("c=",c)
    
    # n= 24981376790941538042242194741227892897407513396986731688877133454927442860995432316502739082570143505514748189761926835267759902439088795405888334103808204493954060044146586606969762154041793765844462081845490598211667272961234605967919438875499785814549051002289336390400088945736443426364361032870741024016549739096474413537901098157940458928277363388694717514323106251487767419607466664175936942972759711506228656400164583540573319572125036265662330306877811831045019686459493451558882811173136631573392182233161484350878695026357462290962322316959710815852914274474767115283825849610223430527125542218326259388501
    # e= 65537
    # c= 20159395346151098135636315342962498279920000537186367678734614295342297238729946157173169398141183795295342421626812913110784320710149318393656661582157610182569479131625808166266400522513050071081253869746865806961410702124426021839786686971490883603141916263075756918270160269956469968815381434371042453456185750940323619568741956243054983302281739844073931738335165924679149156513059772597287311150001080524533236565521881558592378167621577532597521749930820990533120461791013359786254216859344006298715497621642857727174896969485816794718062289736382736417151820935214824518306312811267158057425922650562544599188

    exp:

    #p与q相近,可以费马分解。也可以直接开方求根附近的素数,即为p, q。
    from Crypto.Util.number import *
    from gmpy2 import next_prime,iroot
    e = 0x10001
    n = 24981376790941538042242194741227892897407513396986731688877133454927442860995432316502739082570143505514748189761926835267759902439088795405888334103808204493954060044146586606969762154041793765844462081845490598211667272961234605967919438875499785814549051002289336390400088945736443426364361032870741024016549739096474413537901098157940458928277363388694717514323106251487767419607466664175936942972759711506228656400164583540573319572125036265662330306877811831045019686459493451558882811173136631573392182233161484350878695026357462290962322316959710815852914274474767115283825849610223430527125542218326259388501
    c = 20159395346151098135636315342962498279920000537186367678734614295342297238729946157173169398141183795295342421626812913110784320710149318393656661582157610182569479131625808166266400522513050071081253869746865806961410702124426021839786686971490883603141916263075756918270160269956469968815381434371042453456185750940323619568741956243054983302281739844073931738335165924679149156513059772597287311150001080524533236565521881558592378167621577532597521749930820990533120461791013359786254216859344006298715497621642857727174896969485816794718062289736382736417151820935214824518306312811267158057425922650562544599188
    t = iroot(n,2)[0]
    q = next_prime(t)
    p = n//q
    assert(n==p*q)
    d = inverse(e,(p-1)*(q-1))
    print(long_to_bytes(pow(c,d,n)).decode())
    # NSSCTF{1d518f8b-5878-11ee-acac-c03c59457d4d}

    五、polynomial

    附件信息

    from Crypto.Util.number import *
    flag = b'NSSCTF{******}'
    
    m = bytes_to_long(flag)
    
    a = getPrime(512)
    b = getPrime(512)
    c = getPrime(512)
    d = getPrime(512)
    e = getPrime(512)
    x = getPrime(64)
    
    p = getPrime(1024)
    
    y = a*x**4 + b*x**3 + c*x**2 + d*x + e
    y = y%p
    
    print(f'p = {p}')
    print(f'a = {a}')
    print(f'b = {b}')
    print(f'c = {c}')
    print(f'd = {d}')
    print(f'e = {e}')
    print(f'y = {y}')
    print(f'h = {x*m}')
    
    '''
    p = 158805288384650271811274620112885426807134870587281058486409657841571541118874370262125616758392586636436387032461169543181918821693975663497124408432536495676514953509756505781488235396628730376794651046582155886825258656047349260441547239700695773934518441411466809921946609164932234396841476405798428700843
    a = 6782997653971692606019358747667066963688636909392719204001155907616272998599567932030340899158310591583056298423803386927289244122405887173827359025095219
    b = 7373784501270128110088353737302182289453185058537147667058852830178883492374394182313086562761123093282613985656842374554466162992585768060168515936322837
    c = 12604317328077074383094898759023155531982085126299017370476099122695860476733267706510100804874716354025394150676456477445303955715981977583036765619931291
    d = 8651550199315105291497863570314512750737000678752642987669418859342691686702373116147125246177399639155277789016646392989483699799276013474039473014389069
    e = 6819653219987864110332165353640553980353581969662542365282269257622467162685937603557862048653003559950780009596692439320585574228684924030626160305559221
    y = 187626421635118933741196210961559541641107643327742932086152135660947241144749750951157691964883138108211067837818748515766812840026814947057023367814232867155997328882540000727585104081833734697954005690818776434169815240704563337
    h = 36198427687223295973782557044383345640934859884880641150183916728479006412929786917944908958646498915497129126843345300628359
    '''

    题目提示

    你会math吗
    hint1:只是解个多项式;

    RSA多项式问题,构造多项式环,sage解

    p = 158805288384650271811274620112885426807134870587281058486409657841571541118874370262125616758392586636436387032461169543181918821693975663497124408432536495676514953509756505781488235396628730376794651046582155886825258656047349260441547239700695773934518441411466809921946609164932234396841476405798428700843
    a = 6782997653971692606019358747667066963688636909392719204001155907616272998599567932030340899158310591583056298423803386927289244122405887173827359025095219
    b = 7373784501270128110088353737302182289453185058537147667058852830178883492374394182313086562761123093282613985656842374554466162992585768060168515936322837
    c = 12604317328077074383094898759023155531982085126299017370476099122695860476733267706510100804874716354025394150676456477445303955715981977583036765619931291
    d = 8651550199315105291497863570314512750737000678752642987669418859342691686702373116147125246177399639155277789016646392989483699799276013474039473014389069
    e = 6819653219987864110332165353640553980353581969662542365282269257622467162685937603557862048653003559950780009596692439320585574228684924030626160305559221
    y = 187626421635118933741196210961559541641107643327742932086152135660947241144749750951157691964883138108211067837818748515766812840026814947057023367814232867155997328882540000727585104081833734697954005690818776434169815240704563337
    h = 36198427687223295973782557044383345640934859884880641150183916728479006412929786917944908958646498915497129126843345300628359
    R. = Zmod(p)[]
    f = a*x**4 + b*x**3 + c*x**2 + d*x + e - y
    print(f.roots())
    #12896387745855437651

    得到x后,直接解

    from Crypto.Util.number import long_to_bytes
    x = 12896387745855437651
    h = 36198427687223295973782557044383345640934859884880641150183916728479006412929786917944908958646498915497129126843345300628359
    m = h//x
    print(long_to_bytes(m))
    #NSSCTF{05223898-4a23-11ee-ae75-c03c59457d4d}

    六、Classical Cipher

    附件信息

    一只兔子翻过5层栅栏去找base玩
    
    U2FsdGVkX19aQNEomnRqmmLlI9qJkzr0pFMeMBF99ZDKTF3CojpkTzHxLcu/ZNCYeeAV3/NEoHhpP5QUCK5Ac+HJlZBMGdKDYwko5+sAATQ=

    兔子流密码(无key型)+栅栏+base,好好好

    七、肮脏的base64

    题目提示

    oi!被加密了

    附件信息

    有密码,没有提示,因此需要破解

    有经验的师傅会试试ctf(大小写试一试),发现密码是CTF

    没经验我们就爆破,选择暴力破解,先设置长度为4

    选择所有大小写和数字

     

    解压打开文件

    今天组织拦截到的密文是HsVHOpJ0lpW9yK4akKWDWe4UW4ZKI0sMkwN3N2WZ,但是组织发现这个似乎并不是传统是base,经情报人员分析得到了原始加密的码表
    o57gjn0Sb9ETqVLYOJyHX42kNaIhrWlU****eszCfD+dtPm1u3AMKpwRGvcxQZ8B
    但码表在传递过程中被人为污染了一块,聪明的你能为组织解出今天的密文吗?

    典型的base64换表(新表缺少部分字符)

    exp:

    #密文:HsVHOpJ0lpW9yK4akKWDWe4UW4ZKI0sMkwN3N2WZ  (原本base64密文)
    #o57gjn0Sb9ETqVLYOJyHX42kNaIhrWlU****eszCfD+dtPm1u3AMKpwRGvcxQZ8B(变换了编码表后的base64,*号为缺少的字符)
    
    #查看变化后的base64缺少了什么字符
    import string
    s = "o57gjn0Sb9ETqVLYOJyHX42kNaIhrWlU****eszCfD+dtPm1u3AMKpwRGvcxQZ8B"
    for i in string.ascii_letters + string.digits:
        if(i not in s):
            print(i)
    #iF6/,这个“/”使自己找出来的,本身代码范围不包含/的ASCII,需要自己找,很好找因为正常表就两个一个+一个/打眼一看就缺少/
    
    #知道缺少了什么后暴力破解
    from Crypto.Util.number import *
    from gmpy2 import *
    from functools import reduce
    import sympy
    import itertools
    
    # coding:utf-8
    def My_base64_encode(inputs, s):
        bin_str = []
        for i in inputs:
            x = str(bin(ord(i))).replace('0b', '')
            bin_str.append('{:0>8}'.format(x))
        # print(bin_str)
        outputs = ""
        nums = 0
        while bin_str:
            temp_list = bin_str[:3]
            if (len(temp_list) != 3):
                nums = 3 - len(temp_list)
                while len(temp_list) < 3:
                    temp_list += ['0' * 8]
            temp_str = "".join(temp_list)
            # print(temp_str)
            temp_str_list = []
            for i in range(0, 4):
                temp_str_list.append(int(temp_str[i * 6:(i + 1) * 6], 2))
            # print(temp_str_list)
            if nums:
                temp_str_list = temp_str_list[0:4 - nums]
    
            for i in temp_str_list:
                outputs += s[i]
            bin_str = bin_str[3:]
        outputs += nums * '='
        print("Encrypted String:\n%s " % outputs)
    
    def My_base64_decode(inputs, s):
        bin_str = []
        for i in inputs:
            if i != '=':
                x = str(bin(s.index(i))).replace('0b', '')
                bin_str.append('{:0>6}'.format(x))
        # print(bin_str)
        outputs = ""
        nums = inputs.count('=')
        while bin_str:
            temp_list = bin_str[:4]
            temp_str = "".join(temp_list)
            # print(temp_str)
            if (len(temp_str) % 8 != 0):
                temp_str = temp_str[0:-1 * nums * 2]
            for i in range(0, int(len(temp_str) / 8)):
                outputs += chr(int(temp_str[i * 8:(i + 1) * 8], 2))
            bin_str = bin_str[4:]
        print("Decrypted String:\n%s " % outputs)
    
    # s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    h = ['i', 'F', '6','/']
    h1 = list(itertools.permutations(h,4))
    #注意这个4是缺少的字符数
    for i in h1:
        m = "".join(i)
        s = "o57gjn0Sb9ETqVLYOJyHX42kNaIhrWlU" + m + "eszCfD+dtPm1u3AMKpwRGvcxQZ8B"
        input_str = "HsVHOpJ0lpW9yK4akKWDWe4UW4ZKI0sMkwN3N2WZ"
        My_base64_decode(input_str, s)
    #NSSCTF{WIKEY_GivE_u_this_f1ag}

    八、dpdpdpdp

    题目信息

    from Crypto.Util.number import *
    flag = b'NSSCTF{******}'
    p = getPrime(512)
    q = getPrime(512)
    n = p*q
    e = getPrime(128)
    d = inverse(e, (p-1)*(q-1))
    dp = d % (p-1)
    m = bytes_to_long(flag)
    c = pow(m, e, n)
    
    print(f'n = {n}')
    print(f'e = {e}')
    print(f'c = {c}')
    print(f'dp = {dp}')
    
    '''
    n = 92288362151232755164303382554034496430634785857894506752180261103500715219090974532177552845107426542175470207920267802066773828210866572070045093611090322738109527534622730588618668861998969946471756352024368486322527057077613762697792913167023012077178671066981439295386486943067698150993422039585259179729
    e = 229991316986730339421575788374847647237
    c = 66178170892880340054212366602556925884485962775832591797127163461420023986798822926684824340567060840259672460835004142425374706821346941926520921852009455818529825976414766339170445233789109526300838535719649346266975388774091834431039678689254534566870194580604694419819400454951059125553501095973278807456
    dp = 8987556601717285362487353965045062789633142861774364363374961991445049127918653163458814169532860957264061203394944931114888144611267605606197232438332289
    '''

    大指数dp泄露,exp:

    from sage import *
    from Crypto.Util.number import long_to_bytes
    from xenny.ctf.crypto.modern.asymmetric.rsa import dpleak
    # 大指数dp泄露
    n = 92288362151232755164303382554034496430634785857894506752180261103500715219090974532177552845107426542175470207920267802066773828210866572070045093611090322738109527534622730588618668861998969946471756352024368486322527057077613762697792913167023012077178671066981439295386486943067698150993422039585259179729
    e = 229991316986730339421575788374847647237
    c = 66178170892880340054212366602556925884485962775832591797127163461420023986798822926684824340567060840259672460835004142425374706821346941926520921852009455818529825976414766339170445233789109526300838535719649346266975388774091834431039678689254534566870194580604694419819400454951059125553501095973278807456
    dp = 8987556601717285362487353965045062789633142861774364363374961991445049127918653163458814169532860957264061203394944931114888144611267605606197232438332289
    
    m = dpleak.attack(dp,c,e=e,n=n)
    flag = long_to_bytes( m )
    print(flag)
    #b'NSSCTF{D0_YoU_WAN1_TO_J0In_NsSCTf}111111111111111111111111111111111111111111111111111111111111111111111111111'

    九、小明文?

    题目信息

    from Crypto.Util.number import *
    import random
    m1=flag = b'NSSCTF{*******}'
    
    def encrypt1(m1):
        p = getPrime(700)
        q = getPrime(700)
        n = p * q
        e = 5
    
        a = getPrime(128)
        b = getPrime(128)
        m1 = bytes_to_long(m1)
        mm1 = a * m1 + b
    
        c1 = pow(m1, e, n)
        c2 = pow(mm1, e, n)
    
        print(f'n = {n}')
        print(f'a = {a}')
        print(f'b = {b}')
        print(f'c1 = {c1}')
        print(f'c2 = {c2}')
    
    # n = 13026126941826887019162872735099540876106694302074884925200107036130428843197729140372377590706535217469477301361486550282890330093772372813532795303163348233096919179478061917423707929667355386062657434467799360617526194768968700908096844475960205671302377364202483195391706116078632202015938962280529309403244885363904094804118278167720593581764017089021116316636464533785051436622916960956665030100255641288863474938703
    # a = 280807370135687531454416708417179457159
    # b = 210598260561987226227971066630761929397
    # c1 = 5484670538103757119990644460454986219076673914082966464351809153114702100411054106785392646801736865489738145857425179185164710603704198643749378051371008266521829572436350080663825339915763509501690398283916091505443322384568973565599179112299853287766734493187659418383619877040013434926843623979979122417950089001830664273269598688130410251828579862218274297572192961909808728768317567218412746711665911495028223620671
    # c2 = 249587944874112168607313602465869274336587750392364868939732783502223999305089384749508572630699199927194600499968110646290832205640569694933539973256281796631433129626712361622584048439446364992886884217198680921278383770604919381329363647924261642857483728973331091285820401689502291336332199019252649615680893389557508558362194551939434128389351824194393680744241807605416750291337127085044177563509645273228457253193

    小明文不行。。。别被坑了,这是一个RSA的Franklin Reiter攻击类型

    不了解的看这里:Franklin-Reiter相关消息攻击

    如果两条消息之间仅存在已知的固定差异

    m1 = bytes_to_long(flag)

    m2 = a*m1 + b

    和RSA是否在相同的RSA模N下加密

    这样就有可能同时恢复它们

    sage解码

    n = 13026126941826887019162872735099540876106694302074884925200107036130428843197729140372377590706535217469477301361486550282890330093772372813532795303163348233096919179478061917423707929667355386062657434467799360617526194768968700908096844475960205671302377364202483195391706116078632202015938962280529309403244885363904094804118278167720593581764017089021116316636464533785051436622916960956665030100255641288863474938703
    a = 280807370135687531454416708417179457159
    b = 210598260561987226227971066630761929397
    c1 = 5484670538103757119990644460454986219076673914082966464351809153114702100411054106785392646801736865489738145857425179185164710603704198643749378051371008266521829572436350080663825339915763509501690398283916091505443322384568973565599179112299853287766734493187659418383619877040013434926843623979979122417950089001830664273269598688130410251828579862218274297572192961909808728768317567218412746711665911495028223620671
    c2 = 249587944874112168607313602465869274336587750392364868939732783502223999305089384749508572630699199927194600499968110646290832205640569694933539973256281796631433129626712361622584048439446364992886884217198680921278383770604919381329363647924261642857483728973331091285820401689502291336332199019252649615680893389557508558362194551939434128389351824194393680744241807605416750291337127085044177563509645273228457253193
    e=5
    def franklinReiter(n,e,c1,c2,a,b):
        R. = Zmod(n)[]
        f1 = X^e - c1
        f2 = (X*a+ b)^e - c2
        # coefficient 0 = -m, which is what we wanted!
        return Integer(n-(compositeModulusGCD(f1,f2)).coefficients()[0])
    
    def compositeModulusGCD(a, b):
        if(b == 0):
            return a.monic()
        else:
            return compositeModulusGCD(b, a % b)
    
    m=franklinReiter(n,e,c1,c2,a,b)
    print(m)
    print(type(m))
    #2806865643354785582447058473372538382961766115574914049099282462437697164397424611542516856194548817486973
    #

     得到m后,转字节即可

    import libnum
    m = 2806865643354785582447058473372538382961766115574914049099282462437697164397424611542516856194548817486973
    print(libnum.n2s(int(m)))
    #NSSCTF{89c507f3-4a21-11ee-a71e-c03c59457d4d}

     整体来说很基础,除了最后一个稍微有点难度哈哈哈,喜欢的宝子们可以点点赞,推荐一下捏((((

     


    __EOF__

  • 本文作者: _沐小琪_
  • 本文链接: https://www.cnblogs.com/mumuhhh/p/17775484.html
  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。
  • 相关阅读:
    03.大型高并发微服务系统设计
    PAT (Basic Level) Practice 1023~1044
    七夕玫瑰花合集
    如何保证PCB孔铜高可靠?
    【Linux】探索环境变量与C语言命令行参数处理
    下载安装Ipa Guard
    手搭手入门MybaitsX
    java计算机毕业设计springboot+vue中国古诗词网站(源码+系统+mysql数据库+Lw文档)
    SpringMVC学习笔记——2
    红细胞膜载近红外荧光染料IR780的壳膜/细胞膜荧光染料CM-Dil标记BMSCs的制备
  • 原文地址:https://www.cnblogs.com/mumuhhh/p/17775484.html