2021数字中国创新大赛虎符网络安全赛道插图

4月3号的比赛了,最后81名,做了一道密码一道逆向

因为没进线下,而且准备考研,wp没写,把草稿放博客吧。

crypto 1

An interesting equation: x/(y+z)+y/(z+x)+z/(x+y)=4 x,y,z∈Z+ (mlzeng.com)

Magma Calculator (usyd.edu.au)

sage: R.<x,y,z> = QQ[];
sage: F= x**3 + y**3 + z**3 - 5 * x**2 * (y + z) - 5 * y**2 * (
....:                         z + x) - 5 * z**2 * (x + y) - 9 * x * y * z;
sage: WeierstrassForm(F)
(-14835/16, 347687/32)
sage:
sage: E = EllipticCurve([-14835/16, 347687/32])
sage: E.rank()
1
sage: E.gens()
[(-129/4 : 85 : 1)]
sage:
(sage-sh) iyzyi@LAPTOP-1BTL2B1A:桌面$ sage ./6.sage
(-23, -7, 3)
(-8, -7, 5)
(-7, -23, 3)
(-7, -8, 5)
(-5, 7, 8)
(-5, 8, 7)
(-3, 7, 23)
(-3, 23, 7)
(-1, -1, 1)
(-1, 0, 1)
(-1, 1, 0)
(-1, 1, 1)
(0, -1, 1)
(1, -1, 0)
(1, -1, 1)
(7, -5, 8)
(7, -3, 23)
(8, -5, 7)
(23, -3, 7)
(sage-sh) iyzyi@LAPTOP-1BTL2B1A:桌面$ 
R<x,y,z> := RationalFunctionField(Rationals(),3); 
 
problem := ((x/(y+z) + y/(x+z) + z/(x+y)) - 6) ; 

Evaluate(problem,[-23, -7, 3]); 

problem*Denominator(problem); 

P2<x,y,z> := ProjectiveSpace(Rationals(),2); 
C := Curve(P2,x^3 - 5*x^2*y - 5*x^2*z - 5*x*y^2 - 9*x*y*z - 5*x*z^2 + y^3 - 5*y^2*z - 5*y*z^2 + z^3); 
 
Pt := C![-23, -7, 3]; 
 
E,f := EllipticCurve(C); 
 
g := f^-1; 

for n:= 1 to 100 do 
 
    nPt_inE:=n*f(Pt); 
 
    nPt_inC:=g(nPt_inE); 

    X := Numerator(nPt_inC[1]); 
    Y := Numerator(nPt_inC[2]); 
    Z := Denominator(nPt_inC[1]); 
 
printf "X=%o\nY=%o\nZ=%o\n",X,Y,Z; 
 
  if ((X gt 0) and (Y gt 0)) then 
       printf("GOT IT!!! x=apple, y=banana, z=pineapple, check the above solution\n"); 
     break; 
  else 
     printf "Nee, some coordinate was negative above, I keep in the loop\n\n"; 
  end if; 
 
end for;    
 
if Evaluate(problem, [X,Y,Z]) eq 0 then 
    printf "I evaluated the point to the original problem and yes, it worked!\n"; 
else 
    printf "Mmm this cannot happen!\n"; 
end if;