我有一个属于Secp256k1曲线的点:
P(x,y) = (0xeac136e97ce6bf3e2bceb65d906742f7317b6518c54c64353c43dcc36688c47,
0x477bc56ad656f92ce7ad2e832ced54eb923ee3ca6b35938da81eb91b926e9075)
我有点p的倒数:
P(x,-y) = (0xeac136e97ce6bf3e2bceb65d906742f7317b6518c54c64353c43dcc36688c47,
0xcac32ca278717b5313c1a919437275f5d4aacaa2cdf0fa65c6a1bbff59603a8f)
下面是我在Python中的“测试”
x = 0xeac136e97ce6bf3e2bceb65d906742f7317b6518c54c64353c43dcc36688c47
y = 0x477bc56ad656f92ce7ad2e832ced54eb923ee3ca6b35938da81eb91b926e9075
_y = 0xcac32ca278717b5313c1a919437275f5d4aacaa2cdf0fa65c6a1bbff59603a8f
F = 0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f
检查点(x,y)是否真的位于比特币的椭圆曲线上:
>>> pow(y, 2, F) == ((pow(x, 3) + 7) % F)
True
检查点(x,-y)是否真的是点(x,y)的逆模F:
>>> (y*_y) % F
1
检查点(x,-y)是否在比特币的椭圆曲线上:
>>> pow(_y, 2, F) == ((pow(x, 3) + 7) % F)
False
有人能告诉我我做错了什么吗?椭圆曲线上的点逆也应属于该曲线。你知道吗
你对
-y
的计算有错误。你计算了y
的乘法逆。使用_y
的定义,可以检查y *_y % F
的计算结果是否为1
。你知道吗相反,
-y = F-y
在此上下文中:相关问题 更多 >
编程相关推荐