另一种题型,给你有关n的其他有关算式

    女朋友的聊天记录🥦
    image.png
    题目提示:peiqi=(p+520)*(q+520)
    根据给的提示分析加密过程

    1. 1,生成m1~30的随机数次方 --->c1
    2. 2,用公钥(n,e)加密c1 --->c2
    3. 3,用公钥(peiqi,e)加密c2 --->c3
    1. n=26609708421376677628454402900087009846291167287676911113310671001067916215975654619357943078675057781284419971876364188201285756254849493795101184689472972451252559267516902582277554505702670110528791300961267369272080284734306320521513748467464633545459859474195548892296577923424451509458569436363709731402197392186162426572460924170144815459280292038798573517240473723212917475994555278140089160884080770934882248855992019482512867322735936930918031567624003424284507526700957286437082738893899468444943650565398213516262653534101927337725614414267105976588592783298584640344155571836662897588729868409203459117059
    2. e=65537
    3. peiqi=26609708421376677628454402900087009846291167287676911113310671001067916215975654619357943078675057781284419971876364188201285756254849493795101184689472972451252559267516902582277554505702670110528791300961267369272080284734306320521513748467464633545459859474195548892296577923424451509458569436363709731572253846238252647161985685432295738082766877396752019943012580636589164644125010073946413108951305564059881537794476457602047138719485228161010739405064157783241778448944470473298163156034126054406807297456937129548816176179704045207131224909988357244665869859061263890702529905040557579134990132844969289396259
    4. c=5482202777490716534742001860730733245703162680164829063899425154796149111749426755752696933474476315957195654145886661833161128752650489114348801850277281013599078248459234726247608999052658393093261773012085995729908722425867518715231403283837324730986276769991562455242112930535955638946020374499583285967368081356098316200877276281391326176072541717343183325729633161998105304336388217903809696260815719456619790067591554832909766088841683629739632809828420661566086443444796658031348007908713779060772794447103923388464348339614504047304444504066194611260026519898801631578959669217929301004775518173581480779628

    构建方程

    1. x^2-(p+q)x+p*q=0
    2. 即(x-p)*(x-q)=0 —–> 方程两个根即为p,q的值
    3. 密钥peiqi可以分解为
    4. peiqi = p*q + 520p + 520q + 520*520
    5. = n + 520(p+q) + 520*520
    6. (p+q) = (peiqi - n - 520*520)//520
    7. (p*q) = n

    有了这些再根据求根公式计算x1,x2即为p1,q1的值
    再使用 RSA 解密 2次后,爆破平方数就ok了

    1. from Crypto.Util.number import getPrime,long_to_bytes,bytes_to_long,isPrime
    2. import gmpy2
    3. import libnum
    4. n=26609708421376677628454402900087009846291167287676911113310671001067916215975654619357943078675057781284419971876364188201285756254849493795101184689472972451252559267516902582277554505702670110528791300961267369272080284734306320521513748467464633545459859474195548892296577923424451509458569436363709731402197392186162426572460924170144815459280292038798573517240473723212917475994555278140089160884080770934882248855992019482512867322735936930918031567624003424284507526700957286437082738893899468444943650565398213516262653534101927337725614414267105976588592783298584640344155571836662897588729868409203459117059
    5. e=65537
    6. peiqi=26609708421376677628454402900087009846291167287676911113310671001067916215975654619357943078675057781284419971876364188201285756254849493795101184689472972451252559267516902582277554505702670110528791300961267369272080284734306320521513748467464633545459859474195548892296577923424451509458569436363709731572253846238252647161985685432295738082766877396752019943012580636589164644125010073946413108951305564059881537794476457602047138719485228161010739405064157783241778448944470473298163156034126054406807297456937129548816176179704045207131224909988357244665869859061263890702529905040557579134990132844969289396259
    7. c3=5482202777490716534742001860730733245703162680164829063899425154796149111749426755752696933474476315957195654145886661833161128752650489114348801850277281013599078248459234726247608999052658393093261773012085995729908722425867518715231403283837324730986276769991562455242112930535955638946020374499583285967368081356098316200877276281391326176072541717343183325729633161998105304336388217903809696260815719456619790067591554832909766088841683629739632809828420661566086443444796658031348007908713779060772794447103923388464348339614504047304444504066194611260026519898801631578959669217929301004775518173581480779628
    8. pq = n
    9. paq = (peiqi-n-520*520)//520
    10. a=gmpy2.mpz(1)
    11. b=gmpy2.mpz(-paq)
    12. c=gmpy2.mpz(n)
    13. i=gmpy2.mpz(gmpy2.iroot(b*b-4*a*c,2)[0])
    14. x1=(-b-i)//2
    15. x2=(-b+i)//2
    16. p1=x2
    17. q1=x1
    18. p2=x2+2
    19. q2=x1+2
    20. n1_ol=(p1-1)*(q1-1)
    21. n2_ol=(p1+520-1)*(q1+520-1)
    22. d3=gmpy2.invert(e,n2_ol)
    23. m3=gmpy2.powmod(c3,d3,peiqi)
    24. d2=gmpy2.invert(e,n1_ol)
    25. m2=gmpy2.powmod(m3,d2,n)
    26. for i in range(0,30):
    27. try:
    28. print(i)
    29. m1=gmpy2.iroot(m2,i)[0]
    30. print(libnum.n2s(m1))
    31. except:
    32. continue