【问题标题】:Finding public key for ECC查找 ECC 的公钥
【发布时间】:2021-03-28 18:57:46
【问题描述】:

我有以下椭圆曲线:

y^2 = x^3 + 9x + 17 mod 23 (a = 9, b = 17, p = 23) 基点 G = (16,5)

有了这些信息并使用私钥 PA = 10,我如何计算私钥 nA? 我知道等式是 PA = nA * G,但我不确定如何实际执行计算。

【问题讨论】:

  • 一切都清楚了吗?
  • 仅供参考,在 stackoverflow 中,如果答案对他们有用,就会有人赞成。如果答案满足您作为原始海报的要求,则接受答案。这有助于社区查看问题是否有有效答案。

标签: encryption cryptography elliptic-curve


【解决方案1】:

根据您的标题,您可以使用 SageMath 找到它。

假设私钥是10,是的,它是一个介于1和曲线阶数E.order()之间的整数。

然后将公钥计算为[10]G。这里[10] 表示将G 本身添加10 次G+G+G+G+G+G+G+G+G+G。请注意,这不是元组的普通添加。它是基于切弦规则的椭圆曲线点加法。

E = EllipticCurve(GF(23),[9,17])
print(E)
print(E.order())

G = E(16,5)
print(10*G)

打印

Elliptic Curve defined by y^2 = x^3 + 9*x + 17 over Finite Field of size 23
32
(3 : 18 : 1)

如果您要学习密码学,请通过 SageMathCell 在线尝试并学习 SageMath。 SageMath 使用 Python3 语法,因此易于学习。而且,这里是 SageMath 参考 Elliptic curves over finite fieldsthe tutorial of SageMath

【讨论】:

    猜你喜欢
    • 2016-09-25
    • 2016-09-20
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多