另一种题型,给你有关n的其他有关算式
女朋友的聊天记录🥦
题目提示:peiqi=(p+520)*(q+520)
根据给的提示分析加密过程
1,生成m的1~30的随机数次方 --->c1
2,用公钥(n,e)加密c1 --->c2
3,用公钥(peiqi,e)加密c2 --->c3
n=26609708421376677628454402900087009846291167287676911113310671001067916215975654619357943078675057781284419971876364188201285756254849493795101184689472972451252559267516902582277554505702670110528791300961267369272080284734306320521513748467464633545459859474195548892296577923424451509458569436363709731402197392186162426572460924170144815459280292038798573517240473723212917475994555278140089160884080770934882248855992019482512867322735936930918031567624003424284507526700957286437082738893899468444943650565398213516262653534101927337725614414267105976588592783298584640344155571836662897588729868409203459117059
e=65537
peiqi=26609708421376677628454402900087009846291167287676911113310671001067916215975654619357943078675057781284419971876364188201285756254849493795101184689472972451252559267516902582277554505702670110528791300961267369272080284734306320521513748467464633545459859474195548892296577923424451509458569436363709731572253846238252647161985685432295738082766877396752019943012580636589164644125010073946413108951305564059881537794476457602047138719485228161010739405064157783241778448944470473298163156034126054406807297456937129548816176179704045207131224909988357244665869859061263890702529905040557579134990132844969289396259
c=5482202777490716534742001860730733245703162680164829063899425154796149111749426755752696933474476315957195654145886661833161128752650489114348801850277281013599078248459234726247608999052658393093261773012085995729908722425867518715231403283837324730986276769991562455242112930535955638946020374499583285967368081356098316200877276281391326176072541717343183325729633161998105304336388217903809696260815719456619790067591554832909766088841683629739632809828420661566086443444796658031348007908713779060772794447103923388464348339614504047304444504066194611260026519898801631578959669217929301004775518173581480779628
构建方程
x^2-(p+q)x+p*q=0
即(x-p)*(x-q)=0 —–> 方程两个根即为p,q的值
密钥peiqi可以分解为
peiqi = p*q + 520p + 520q + 520*520
= n + 520(p+q) + 520*520
(p+q) = (peiqi - n - 520*520)//520
(p*q) = n
有了这些再根据求根公式计算x1,x2即为p1,q1的值
再使用 RSA 解密 2次后,爆破平方数就ok了
from Crypto.Util.number import getPrime,long_to_bytes,bytes_to_long,isPrime
import gmpy2
import libnum
n=26609708421376677628454402900087009846291167287676911113310671001067916215975654619357943078675057781284419971876364188201285756254849493795101184689472972451252559267516902582277554505702670110528791300961267369272080284734306320521513748467464633545459859474195548892296577923424451509458569436363709731402197392186162426572460924170144815459280292038798573517240473723212917475994555278140089160884080770934882248855992019482512867322735936930918031567624003424284507526700957286437082738893899468444943650565398213516262653534101927337725614414267105976588592783298584640344155571836662897588729868409203459117059
e=65537
peiqi=26609708421376677628454402900087009846291167287676911113310671001067916215975654619357943078675057781284419971876364188201285756254849493795101184689472972451252559267516902582277554505702670110528791300961267369272080284734306320521513748467464633545459859474195548892296577923424451509458569436363709731572253846238252647161985685432295738082766877396752019943012580636589164644125010073946413108951305564059881537794476457602047138719485228161010739405064157783241778448944470473298163156034126054406807297456937129548816176179704045207131224909988357244665869859061263890702529905040557579134990132844969289396259
c3=5482202777490716534742001860730733245703162680164829063899425154796149111749426755752696933474476315957195654145886661833161128752650489114348801850277281013599078248459234726247608999052658393093261773012085995729908722425867518715231403283837324730986276769991562455242112930535955638946020374499583285967368081356098316200877276281391326176072541717343183325729633161998105304336388217903809696260815719456619790067591554832909766088841683629739632809828420661566086443444796658031348007908713779060772794447103923388464348339614504047304444504066194611260026519898801631578959669217929301004775518173581480779628
pq = n
paq = (peiqi-n-520*520)//520
a=gmpy2.mpz(1)
b=gmpy2.mpz(-paq)
c=gmpy2.mpz(n)
i=gmpy2.mpz(gmpy2.iroot(b*b-4*a*c,2)[0])
x1=(-b-i)//2
x2=(-b+i)//2
p1=x2
q1=x1
p2=x2+2
q2=x1+2
n1_ol=(p1-1)*(q1-1)
n2_ol=(p1+520-1)*(q1+520-1)
d3=gmpy2.invert(e,n2_ol)
m3=gmpy2.powmod(c3,d3,peiqi)
d2=gmpy2.invert(e,n1_ol)
m2=gmpy2.powmod(m3,d2,n)
for i in range(0,30):
try:
print(i)
m1=gmpy2.iroot(m2,i)[0]
print(libnum.n2s(m1))
except:
continue