You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SageMath从椭圆曲线的A+B与A-B点反推A、B点

椭圆曲线已知点和与点差求原点点的解法

核心原理

在椭圆曲线加法群中,若已知 ( C = A+B )、( D = A-B ),则可通过群运算的逆操作推导原点点:

  • ( 2A = C + D ) → ( A = \frac{1}{2}(C + D) )
  • ( 2B = C - D ) → ( B = \frac{1}{2}(C - D) )
    这里的(\frac{1}{2})指椭圆曲线中的点二分运算,即求解满足(2P = Q)的点(P)。

SageMath 实现步骤

  1. 定义曲线与已知点
    替换示例中的有限域阶数(K)、曲线参数(m/n),以及已知点(C=A+B)、(D=A-B)的坐标:
# 配置你的曲线参数
K = 17
E = EllipticCurve(GF(K), [2, 3])  # 对应曲线 y² = x³ + 2x + 3

# 已知点C=(x3,y3)、D=(x4,y4),替换为你的实际坐标
C = E(5, 1)
D = E(10, 6)
  1. 计算点A
    先求(C+D),再对结果做二分运算:
Q1 = C + D
A = Q1 / 2  # Sage直接支持点的除法,等价于求2A=Q1的解
  1. 计算点B
    先求(C-D)(等价于(C + (-D))),再做二分运算:
Q2 = C - D
B = Q2 / 2
  1. 验证结果
    确认推导的点满足原条件:
print("A+B == C:", A + B == C)
print("A-B == D:", A - B == D)

注意事项

  • 二分运算仅在(Q1)、(Q2)不是2阶挠点(即(2Q \neq O),(O)为无穷远点)时有解;若为2阶点,可能无有效解或存在多个解。
  • 当有限域特征≠2时,Sage的点除法会自动调用标量乘法逆运算,即通过计算2在乘法群中的逆元实现二分。

内容的提问来源于stack exchange,提问作者Julien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 00:47:18