Python——有限域上的计算(给定函数,输出LUT)

给定一个函数f(x) \in F_{2^{n}}[x],选择n,输出它的LUT(查找表Look-Up-Table)

def computation_over_finite_fields(n):
    """
    给定一个有限域GF(2^n),遍历域中的每个元素,计算函数的输出结果。
    :param n: 2的n次方上的有限域
    :return:x=GF([0,1,...,2^n-1]),y=f(x)的结果,这里的函数y可以改变。返回的值仍是一个列表,这个列表里是有限域里的元素,它们之间的加法和乘法仍然是有限域里的加法和乘法
    """

    import galois

    GF = galois.GF(2**n)#创建有限域
    x = GF(list(range(2**n)))#用列表生成有限域上的元素GF([0,1,2,...,2**n-1])
    g = GF.primitive_element#生成本原元
    # 输入自己的函数,例子中的y=x^3+(g^2)*x^2+1.注意如果有常数要用:GF(常数)
    y = x **3 + (g** 2)* x** 2 + x + GF(1)
    

    return y

#选择n,这里n选的是4
example_y = computation_over_finite_fields(4)
list_y = [int(i) for i in example_y]#用十进制列表输出
print(list_y)

output:

[1, 5, 8, 10, 5, 6, 9, 12, 6, 6, 2, 4, 12, 11, 13, 12]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值