标签:aes ECC secret 初探 print C2 C1
为了学习一下ECC加密,练习了unctf2019的一道题目,不算难但是可以很好的学习一下ECC加密的流程,题目主要是AES+ECC,但是重点还是ECC的加密。
下载文件后我们得到一个ecc.sage
E=EllipticCurve(GF(15424654874903),[16546484,4548674875])
G=E(6478678675, 5636379357093)
k=???????
K=k*G
#K=(2854873820564,9226233541419)
aes_key=???????
x=aes_key
M=E.lift_x(x)
r=?????????
C1=M+r*K
x1,y1=C1.xy()
C2=r*G
x2,y2=C2.xy()
print 'C1(%d,%d),C2(%d,%d)'%(x1,y1,x2,y2)
#output:
C1(6860981508506,1381088636252),C2(1935961385155,8353060610242)
这里可以参考ctfwiki上面的ecc代码进行爆破,但是注意一个点:
我们要求解出M,由C1-(C2k)=M+rK-rGk=M(G*k=K)
参考代码如下
E=EllipticCurve(GF(15424654874903),[16546484,4548674875])
G=E(6478678675, 5636379357093)
c1 = E([6860981508506,1381088636252])
c2 = E([1935961385155,8353060610242])
X = G
for i in range(1, 40000000):
if X == pub:
secret = i
print "[+] secret:", i
break
else:
X = X + G
print i
m = c1 - (c2 * secret)
print "[+] x:", m[0]
print "[+] y:", m[1]
print "[+] x+y:", m[0] + m[1]
结果
这里的secret就是k,x也就是aes_key,将其带入aes的程序代码就可以求出答案。
标签:aes,ECC,secret,初探,print,C2,C1 来源: https://www.cnblogs.com/Mr-small/p/13943564.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。