【Sage数学库】椭圆曲线加密 《密码学by金晨辉》P279页习题6、P275页例5.4.3

编程入门 行业动态 更新时间:2024-10-10 21:32:18

【Sage数学库】椭圆曲线加密 《<a href=https://www.elefans.com/category/jswz/34/1761750.html style=密码学by金晨辉》P279页习题6、P275页例5.4.3"/>

【Sage数学库】椭圆曲线加密 《密码学by金晨辉》P279页习题6、P275页例5.4.3

# 使用 WinG IDE/PyCharm 进行 Sage Python 数学编程,主要目的是方便调试!
# 使用 WinG IDE/PyCharm 进行 Sage Python 数学编程,必须加上这句: [from sage.all import * ]from sage.all import *from sage.schemes.elliptic_curves.ell_point import EllipticCurvePoint_finite_field########################################################################
# 椭圆曲线加密 《密码学by金晨辉》 P279页 【练习题6】
EC = EllipticCurve(GF(23), [0, 0, 0, 1, 4])
ecPoints = EC.points()
print(type(ecPoints))
print(type(ecPoints[0]))
print(ecPoints)# 构造 椭圆曲线上的 P点
point_P = EC(4, 7)
# P点:
print("P点", end="")
print(point_P)# 构造 椭圆曲线上的 Q点
point_Q = EC(13, 11)
# Q点:
print("Q点", end="")
print(point_Q)# 计算两点的和: P + Q
point_P_sum_Q = point_P + point_Q
print("P点与Q点的和:", end="")
print(point_P_sum_Q)print("########################################################################")
########################################################################
# 椭圆曲线加密 《密码学by金晨辉》 P275页
E = EllipticCurve(GF(11), [0, 0, 0, 1, 6])
# 使用 Wing IDE 调试,可以直接看到 该椭圆曲线上面的 各个点(用 Show Value as Array 方法):
# E.__points (EllipticCurve_finite_field) = sequence[13x1]: [(0 : 1 : 0), (2 : 4 : 1), (2 : 7 : 1), (3 : 5 : 1), (3 : 6 : 1), (5 : 2 : 1),  ... (truncated)print(type(E))
print("该椭圆曲线上面的 点的个数:")
print(E.order())
print(E.gens())
print(type(E.gens()))
print(E.gens()[0])
print(type(E.gens()[0]))
point_gen = E.gens()[0]
print(point_gen.xy())
print(E.abelian_group())
E.gen(0)
sum_2p = point_gen * 2
print(sum_2p)print("计算 i倍的点,i从1到27:")
for i in range(1, 28):sum__p_X_i = point_gen * iprint("第[{0}]个点:{1}".format(i, sum__p_X_i))# 直接用简便方法,一个方法实现:
E_allPoints = E.points()
print("E_allPoints所有点的个数:", end="")
print(len(E_allPoints))
print("E_allPoints所有点:")
print(E_allPoints)

<class 'sage.structure.sequence.Sequence_generic'>
<class 'sage.schemes.elliptic_curves.ell_point.EllipticCurvePoint_finite_field'>
[(0 : 1 : 0), (0 : 2 : 1), (0 : 21 : 1), (1 : 11 : 1), (1 : 12 : 1), (4 : 7 : 1), (4 : 16 : 1), (7 : 3 : 1), (7 : 20 : 1), (8 : 8 : 1), (8 : 15 : 1), (9 : 11 : 1), (9 : 12 : 1), (10 : 5 : 1), (10 : 18 : 1), (11 : 9 : 1), (11 : 14 : 1), (13 : 11 : 1), (13 : 12 : 1), (14 : 5 : 1), (14 : 18 : 1), (15 : 6 : 1), (15 : 17 : 1), (17 : 9 : 1), (17 : 14 : 1), (18 : 9 : 1), (18 : 14 : 1), (22 : 5 : 1), (22 : 18 : 1)]
P点(4 : 7 : 1)
Q点(13 : 11 : 1)
P点与Q点的和:(15 : 6 : 1)
########################################################################
<class 'sage.schemes.elliptic_curves.ell_finite_field.EllipticCurve_finite_field_with_category'>
该椭圆曲线上面的 点的个数:
13
((5 : 9 : 1),)
<class 'tuple'>
(5 : 9 : 1)
<class 'sage.schemes.elliptic_curves.ell_point.EllipticCurvePoint_finite_field'>
(5, 9)
Additive abelian group isomorphic to Z/13 embedded in Abelian group of points on Elliptic Curve defined by y^2 = x^3 + x + 6 over Finite Field of size 11
(10 : 9 : 1)
计算 i倍的点,i从1到27:
第[1]个点:(5 : 9 : 1)
第[2]个点:(10 : 9 : 1)
第[3]个点:(7 : 2 : 1)
第[4]个点:(3 : 6 : 1)
第[5]个点:(8 : 3 : 1)
第[6]个点:(2 : 7 : 1)
第[7]个点:(2 : 4 : 1)
第[8]个点:(8 : 8 : 1)
第[9]个点:(3 : 5 : 1)
第[10]个点:(7 : 9 : 1)
第[11]个点:(10 : 2 : 1)
第[12]个点:(5 : 2 : 1)
第[13]个点:(0 : 1 : 0)
第[14]个点:(5 : 9 : 1)
第[15]个点:(10 : 9 : 1)
第[16]个点:(7 : 2 : 1)
第[17]个点:(3 : 6 : 1)
第[18]个点:(8 : 3 : 1)
第[19]个点:(2 : 7 : 1)
第[20]个点:(2 : 4 : 1)
第[21]个点:(8 : 8 : 1)
第[22]个点:(3 : 5 : 1)
第[23]个点:(7 : 9 : 1)
第[24]个点:(10 : 2 : 1)
第[25]个点:(5 : 2 : 1)
第[26]个点:(0 : 1 : 0)
第[27]个点:(5 : 9 : 1)
E_allPoints所有点的个数:13
E_allPoints所有点:
[(0 : 1 : 0), (2 : 4 : 1), (2 : 7 : 1), (3 : 5 : 1), (3 : 6 : 1), (5 : 2 : 1), (5 : 9 : 1), (7 : 2 : 1), (7 : 9 : 1), (8 : 3 : 1), (8 : 8 : 1), (10 : 2 : 1), (10 : 9 : 1)]
 

更多推荐

【Sage数学库】椭圆曲线加密 《密码学by金晨辉》P279页习题6、P275页例5.4.3

本文发布于:2024-03-15 01:04:06,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737766.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:密码学   椭圆   习题   曲线   数学

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!