在有限域上求矩阵的逆-Python实现

发布时间 2024-01-04 14:20:33作者: wenny-kiki

问题描述:给定一个有限域\(GF(2^m)\),给定有限域上的一个矩阵,求该矩阵的逆
用途:\(GF(2^m)\)上的四则运算是许多加密算法的数学基础,在密码学中有广泛应用

已知:有限域上的加法和乘法与通常意义上的不同,具体步骤参考博客中的列混合部分

思路一:直接使用numpy库,通过指定或定义元素的dtype,直接进行矩阵求逆
×无法实现

思路二:使用sagemath,通过利用有限域上的乘法和加法,间接求矩阵逆
×无法实现,参考链接博客

思路三:使用python的galois库,直接求矩阵逆,该库支持numpy,参考链接galois库 有限域上的运算

import galois

GF = galois.GF(2,repr="poly") #多项式形式
A = GF([[2, 3, 1, 1], [1, 2, 3, 1], [1, 1, 2, 3], [3, 1, 1, 2]])    
B = np.linalg.inv(A)  
print(B)

ps:有能通过思路一或者思路二(或者其他思路)实现的大佬请指教啊!尝试了好久都不行