椭圆曲线上点的基本算术运算。
PyECCArithmetic的Python项目详细描述
Pyecc算术
该软件包提供了椭圆曲线上的基本算术点运算。点的以下操作可用:
- 添加
- 减法
- 乘法
- 部门
- 点顺序(公平点)
- 点的反转
- 是曲线上的点吗?
以下曲线已经实现:
- secp224r1
- secp256r1
- 第384r1节
- SECP521R1
- 脑池160R1
- 脑池p192r1
- 脑池p224r1
- 大脑池p256r1
- 脑池p320r1
- 脑池p384r1
- 大脑池p512r1
也可以定义自己的曲线。
安装
pip install PyECCArithmetic
添加
fromPyECCArithmeticimport*p=Point(x_1,y_1,curve=Curve.secp256r1())q=Point(x_2,y_2,curve=Curve.secp256r1())z=p+q# z is a new point
减法
fromPyECCArithmeticimport*p=Point(x_1,y_1)# curve defaults to Curve.secp256r1()q=Point(x_2,y_2)z=p-q# z = p + (-q), z is a new point
乘法
乘法是用double-and-add算法实现的。
fromPyECCArithmeticimport*p=Point(x_1,y_1)# curve defaults to Curve.secp256r1()z=p*3# z is a new point
分区
fromPyECCArithmeticimport*p=Point(x_1,y_1)# curve defaults to Curve.secp256r1()q=Point(x_2,y_2)z=p/q# z is int, such that z * q == p
订单计算
fromPyECCArithmeticimport*p=Point(x_1,y_1)# curve defaults to Curve.secp256r1()order=p.calcOrder(timeout=5)# tries to calculate the order for maximal timeout seconds
自定义曲线定义
fromPyECCArithmeticimport*# Only curves defined as Weierstrass equation are supported# y^2 = x^3 + a * x + b mod pc=Curve(a,b,p,name='optional')
是曲线上的点吗?
fromPyECCArithmeticimport*onCurve=Point(1,1).isOnCurve# true or false