码迷,mamicode.com
首页 > 其他好文 > 详细

ECC初探

时间:2020-11-08 17:40:14      阅读:35      评论:0      收藏:0      [点我收藏+]

标签:img   结果   python   下载文件   lan   src   bre   一个   http   

为了学习一下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的程序代码就可以求出答案。

ECC初探

标签:img   结果   python   下载文件   lan   src   bre   一个   http   

原文地址:https://www.cnblogs.com/Mr-small/p/13943564.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!