有限域的第一种表示方法称为多项式表示,这种表示是基于域的有限 扩张,设p是素数,,只要找到上一个n次不可约多项式f(x),就 有。 在信息安全领域,应用最多的有限域是和素域。
下面介绍有限域的多项式表示:
选用上的一个n次既约多项式扩成一个,由模的 全体余式的集合,即
每个域的素都可以表示为一个次数 的多项式.
基本运算操作
举例:
注:以下皆为有限域的运算或有限域上的多项式运算。
1.创建有限域
GF=galois.GF(24,repr="poly")
repr="poly"指用多项式表示
2.访问有限域的不可约多项式
GF.irreducible_poly
3.构建有限域上的多项式
f = galois.Poly([1, 1, 1], field=GF)
Out: Poly(x^2 + x + 1, GF(2))
注:在有限域上构建多项式后,几乎任何多项式算术运算都可以 使用 Python 运算符执行,例如f+g、f-g、f*g、加法逆-f、模余f%g、幂f3.
将多项式和有限域标量相加减乘除,标量被视为 0 次多项式,例:f + GF(3)。
4.函数divmod(f, g):
将一个多项式除以另一个多项式并返回商和余数。
divmod(f, g)
5.求多项式最大公因数
d = galois.gcd(f, g)
6.扩展的欧几里得除法求多项式最大公因数和逆
可用该函数求多项式在有限域中的逆。
d, s, t = galois.egcd(f, g)
7.不可约多项式的因式分解
galois.factors(f) f.factors()
以上两种访问方法都可以,galois.factors(f) == f.factors()。
8.访问有限域的属性
print(GF.properties)
9.检索有限域的素
GF7.elements
10.输出有限域的算数表(加减乘)
以加法为例:
print(GF.arithmetic_table("+"))
11.有限域的生成
galois.primitive_root(7)#抽象有限域的生成组 g = GF.primitive_element#具体有限域的最小生成
12.计算有限域的=
有限域的生成g的定义多项式叫做本原多项式,设是上的n次本原多项式,则使得的最小正整数。
g.multiplicative_order()
13.输出有限域的生成表
print(GF.repr_table())
实例
求 的生成 ,并计算 , 和所有生成。
import galois f=galois.irreducible_poly(2,8) GF=galois.GF(28,repr="poly", irreducible_poly=f) print("f=",f) g=GF.primitive_element print("g=",g) g1=g.multiplicative_order() print(g1) print(GF.repr_table(g))
输出Out:
......
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/83762.html