如何解决寻找 ECC 的公钥
我有以下椭圆曲线:
y^2 = x^3 + 9x + 17 mod 23 (a = 9,b = 17,p = 23) 基点 G = (16,5)
有了这些信息并使用私钥 PA = 10,我如何计算私钥 nA? 我知道等式是 PA = nA * G,但我不确定如何实际执行计算。
解决方法
根据您的标题,您可以使用 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 语法,因此易于学习。而且,这里是 Elliptic curves over finite fields 和 the tutorial of SageMath 的 SageMath 参考。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。