在galois域gf(3^m)上定义的仿射坐标系中计算超奇异椭圆曲线e:y^2=x^3-x+1状态双线性对的库

tate_bilinear_pairing的Python项目详细描述


简介

这个包是一个用于计算状态双线性对的python库, 特别是在仿射中的超奇异椭圆曲线$e:y^2=x^3-x+1$ 在伽罗瓦域$gf(3^m)$上定义的坐标。最大订单 $G_1$是911位。

这个包还用于计算两个元素的相加 在椭圆曲线群中,加上$k$恒等元 在椭圆曲线群中。

计算状态双线性对的这个包的代码如下 Beuchat等人的论文[3]。这个计算包的代码 椭圆曲线群运算遵循kerins等人的论文[2]。

这个包是纯python的,使用python 2.7和3.2。

此程序包在3.26秒内计算一个状态双线性对 @Intel Core2 L7500 CPU(1.60GHz),如果$G_1$的顺序是151位。


什么是状态双线性对

一般来说,状态双线性配对算法是一种变换。 它取椭圆曲线上的两点并输出一个非零元素 在扩展字段$gf(3^{6m})$。最先进的计算方法 tate双线性对是由barreto等人[4]引入的eta对。 更多信息,请参考[1,2,3,4]。


用法1:计算状态双线性对

指定g1的顺序为151位:

>>> from tate_bilinear_pairing import eta
>>> eta.init(151)

给定两个这样的随机数:

>>> import random
>>> a = random.randint(0,1000)
>>> b = random.randint(0,1000)

计算两个元素$[inf1,x1,y1]$,和$[inf2,x2,y2]$in 椭圆曲线群:

>>> from tate_bilinear_pairing import ecc
>>> g = ecc.gen()
>>> inf1, x1, y1 = ecc.scalar_mult(a, g)
>>> inf2, x2, y2 = ecc.scalar_mult(b, g)

状态双线性配对通过:

>>> from tate_bilinear_pairing import eta
>>> t = eta.pairing(x1, y1, x2, y2)

用法2:计算椭圆曲线组中两个元素的加法

给定两个元素$p1=[inf1,x1,y1]$,和$p2=[inf2,x2,y2]$。 椭圆曲线组,加法通过:

>>> p1 = [inf1, x1, y1]
>>> p2 = [inf2, x2, y2]
>>> p3 = ecc.add(p1, p2)

用法3:计算$K$相同元素的加法

给定一个非负整数$k$和一个组元素$p1=[inf1,x1,y1]$, $K cdot p1$通过以下方式计算:

>>> k = random.randint(0,1000)
>>> p3 = ecc.scalar_mult(k, p1)

参考资料

[1]I.Duursma,H.S.Lee.
超椭圆曲线$y^2=x^p-x+d$的tate配对实现。 密码学进展。2003年,第111-123页。
[2]T.克林斯、W.P.马纳内、E.M.波波维奇和P.S.L.M.巴雷托。
特性3中状态配对计算的有效硬件。 密码硬件和嵌入式系统.proc.2005年,第412-426页。
[3]J.Beuchat、N.Brisebarre、J.Detrey、E.Okamoto、M.Shirase和T.Takagi。
计算特征3中的$eta_t$对的算法和算术运算符。 《计算机上的ieee交易》,密码学和密码分析专用硬件特别部分,第57卷第11期,第1454-1468页,2008年。
[4]P.S.L.M.Barreto、S.D.Galbraith、C.O Heigerataigh和M.Scott,
超奇异交换变种的有效配对计算。 《设计、代码和密码》,第42卷,第3期,第239-271页,2007年3月。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
找不到足够的连续内存会导致OOM吗?   java如何计算一个矩形可以放入另一个矩形的次数?   谷歌地图api java   java Autowired批注在AuthenticationSuccessHandler中返回null   Java电话号码格式正则表达式   eclipse我希望能够同时选择多个复选框?Java SWT   java j2objc可以用于生成不适用于iOS的目标C代码吗?   使用cUrl将PHP post数组转换为java servlet   java playpac4j和Play 2.5:@requireAuthentication注释导致stacktrace   java为什么在Javamail中连接超时?   java使用SwingUtilities。main方法中的invokeLater()   如何在名为from Unity的Java插件中创建Android处理程序