python有限域的运算——galois库(伽罗瓦群)

这篇具有很好参考价值的文章主要介绍了python有限域的运算——galois库(伽罗瓦群)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有限域的第一种表示方法称为多项式表示,这种表示是基于域的有限 扩张,设p是素数,,只要找到上一个n次不可约多项式f(x),就 有。 在信息安全领域,应用最多的有限域是和素域。

下面介绍有限域的多项式表示:

选用上的一个n次既约多项式扩成一个,由模的 全体余式的集合,即 

python galois库,算法,python,信息与通信,网络安全,密码学

每个域的元素都可以表示为一个次数 的多项式.

基本运算操作

举例:

注:以下皆为有限域的运算或有限域上的多项式运算。

1.创建有限域

GF=galois.GF(2**4,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、幂f**3.

将多项式和有限域标量相加减乘除,标量被视为 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())

实例

求 python galois库,算法,python,信息与通信,网络安全,密码学 的生成元  ,并计算  ,  和所有生成元。
import galois

f=galois.irreducible_poly(2,8)
GF=galois.GF(2**8,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:python galois库,算法,python,信息与通信,网络安全,密码学

......文章来源地址https://www.toymoban.com/news/detail-826079.html

注:API参考网址:Arrays - galois (mhostetter.github.io)

到了这里,关于python有限域的运算——galois库(伽罗瓦群)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 实现卷积运算算法(附完整代码)

    Python 实现卷积运算算法(附完整代码) 卷积是一种基本的数字信号处理方法,它在图像处理、语音识别、神经网络等领域广泛应用。在 Python 中,我们可以使用 NumPy 库来实现卷积运算。 首先,我们需要导入 NumPy 库。然后,定义两个数组,一个是输入数据,一个是卷积核。下

    2024年02月09日
    浏览(46)
  • 利用Matlab实现Abaqus有限元分析预处理器——从inp文件导入模型信息到自编Matlab有限元程序前处理

    大家好,我非常荣幸有这个机会和大家分享我在有限元分析方面的一些经验。我希望我的这篇文章能够帮助你在有限元分析领域获得更多的知识,提升你的技能。这篇文章主要介绍了如何使用Matlab实现一个有限元分析的预处理器,这个预处理器能够从Abaqus的 *.inp 文件中导入模

    2024年02月10日
    浏览(48)
  • Python - 深夜数据结构与算法之 位运算

    目录 一.引言 二.位运算简介 1.二进制与十进制 2.左/右移 3.位运算 4.异或 XOR 5.指定位置的位运算 6.实战要点 三.经典算法实战 1.Number-1-of-bits [191] 2.Power-Of-Two [231] 3.Reverse-2-Bits [190] 4.N-Queens [51] 四.总结 通常情况下我们计数采取十进制,这是因为日常生活中我们习惯了 0-9 的数字

    2024年01月18日
    浏览(42)
  • KMP算法 - 确定有限状态自动机

    子串匹配问题,拍脑袋一下子想出来的暴力解法大抵都是两重for循环,不断重复扫描主串,与子串进行匹配,重复换句话讲就是冗余,会有很高的时间复杂度 我先前博客大作业发的 模糊查找算法 就是如此,我那里是在计算一个匹配度的问题,通过相同定位到相同字母判定开

    2024年02月09日
    浏览(45)
  • 有限字符集的字符串压缩算法

    在开发中,经常有上报线上堆栈来分析处理线上问题的场景,所以,对堆栈的压缩和加密也是必不可少的。加密:可以使用AES对称加密算法,压缩:可以在上传时利用protobuf天生的压缩性对字符串进行压缩。 不过,出于对流量的节省和传输效率的提升,可以通过在堆栈上传前

    2024年02月11日
    浏览(62)
  • 【NLP】有限自动机的KMP算法

    目录 一、说明 二、无策略直接匹配法 2.1  简单粗暴的无脑匹配: 2.2 跳过外循环的思路

    2024年02月08日
    浏览(38)
  • 伽罗华域GF,GF(256)来源

    参考blog: 密码学中的数学基础2 信道编码系列三 域 是一种定义了域中元素两种数学运算的 代数系统 ,域由 全体元素的加法集合以及非零元素的乘法集合构成 。 性质:在加法和乘法上具有封闭性。   对域中元素进行加法或乘法运算后的结果仍然是域中元素。    PS: 

    2023年04月23日
    浏览(29)
  • Unity中的AI算法和实现2-有限状态机FSM(上)

    在上一篇文章中, 我们基于 Waypoint 构建了一个最简单的AI怪物, 这个怪物可以在几个点之间巡逻. 本篇文章会在此基础之上, 添加怪物在巡逻过程中发现玩家并追逐玩家, 并且在距离玩家一定距离之后脱离追逐然后继续进行巡逻. 在添加两个状态之前, 我们先介绍什么是 有限状态

    2024年02月01日
    浏览(39)
  • python计算模板图像与原图像各区域的相似度

    目录 1、解释说明: 2、使用示例: 3、注意事项: 在Python中,我们可以使用OpenCV库进行图像处理和计算机视觉任务。其中,模板匹配是一种常见的方法,用于在一幅图像中识别出与给定模板图像相似的区域。模板匹配的原理是将模板图像在原图像上滑动,计算模板图像与原图

    2024年02月12日
    浏览(38)
  • Python实现信息熵算法——附完整代码

    Python实现信息熵算法——附完整代码 信息熵是信息理论中的一个重要概念,用于描述信息的不确定性。在数据处理领域中,信息熵经常用来评估数据的复杂程度和统计特性。本文将介绍如何用Python实现信息熵算法,并提供附有完整源代码。 首先,我们需要了解信息熵的计算

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包