椭圆曲线加密算法

前言

密码学课后作业,手算公式着实难顶。

脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
p = 11
a = 1
b = 6
def add(A, B):
if A ==(0,0):
return B
if B ==(0,0):
return A
x1, y1 = A
x2, y2 = B
if A != B:
λ =(y2 - y1)*pow((x2 - x1), p-2, p)
print("λ=",λ)
else:
λ =(x1*x1*3+ a)*pow(2*y1, p-2, p)
print("λ=",λ)
x3 = λ * λ - x1 - x2
y3 = λ *(x1 - x3)- y1
return(x3 % p, y3 % p)
G =(10,2)
#k =546768
C =(0, 0)
for i in range(20):
C = add(C, G)
print(i+1)
print(C)

小结

YDdhh师傅,yyds!

0%