【密码学Sage代码】椭圆曲线加密/解密(基于《密码编码学与网络安全——原理与实践(第七版)》)

【密码学Sage代码】椭圆曲线加密/解密(基于《密码编码学与网络安全——原理与实践(第七版)》)

教材内容:

 

实践的Sage代码:

#【静水流深Sage代码】使用椭圆曲线密码体制进行加密/解密

print("使用《密码编码学与网络安全——原理与实践(第七版)》的P228页的【椭圆曲线加密、解密】")
q = 257 # 书上选区素数 q=257
F = GF(q)
print(F)
print("素数域的阶: {0}".format(F.order()))
E = EllipticCurve(F, [0,0,0,  0, -4]) # 书上: Eq(a,b) = E257(0, -4)
print("【椭圆曲线E257(0, -4)】:{0}".format(E))

#获取基点坐标
print("默认的基点坐标:{0}".format( E.gens() ))
print("G = E.gens()[0] 中的G:{0}".format( E.gens()[0] ))

#获取基点的阶
print("椭圆曲线的【阶】,又叫【点群阶】,就是椭圆曲线密码体制中的【点】的个数。【注意:个数包括无穷远点o】")
q = E.order()
print("椭圆曲线的【阶】: {0}".format(q))
allPoints = E.points()
print("椭圆曲线上的所有点:{0}".format(allPoints))

print("(仅仅是试验一把)我们可以这么做 ==> 从椭圆曲线上任意随机选择一个点:")
print( E.points()[randint(2, E.order()-1)] )

print("") #打印空行
print("根据P228页:准备挑选【基点G(2,2)】,该基点G(2, 2)是Alice盒Bob共用的:")
G = E(2, 2)
print("挑选的【基点G】:{0}".format( G ))

print("Alice要给Bob发送**密文**,需要Bob的公钥!")
print("而Bob的公钥构造方法是: 一个随机数 * 基点G")
PrivateB &
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值