【发布时间】:2021-12-27 21:12:11
【问题描述】:
我正在对椭圆曲线进行一些研究。如果我理解正确的话,有一个 G 基点被设置为曲线上的一个大素点。举个例子,我用 G 选择了臭名昭著的 secp256k1 曲线。
G = (0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,
0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8)
我想测试 G 是否位于曲线上。于是我写了一小段python代码。
# y^2 = x^3 + 7
def curveEq(G):
x, y = G
left = (y * y)
right = (x * x * x) + 7
print("L: " + str(left))
print("R: " + str(right))
但我左!=右。我错过了什么?
【问题讨论】:
-
嗯......你忘了整个模数的事情。
-
哦,我不确定这个模组,因为它是基点。在那种情况下,我的代码应该是这样的吗? left = (y * y) + (r * int(P)) 其中 r 是某个订单号?和 P = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc2f ? (如果我认为 x 坐标没有修改)
-
y*y = x*x*x + 7 是椭圆曲线,但不是 secpk1 椭圆曲线。 y*y = x*x*x + 7 mod p 其中 p = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc2f 是 secpk1 椭圆曲线。
-
啊!所以这就是我所缺少的!十分感谢!如果您将其发布为答案,我可以关闭它:)
标签: cryptography elliptic-curve