当前位置: 首页 > news >正文

伽罗华域(galois field)的乘法计算(异或法)

本文将会以GF(256)举例在伽罗华域中的计算过程

元素的多项式

GF(256) 是包含 28=256 个元素的有限域,数字可以被表示成一个不可约多项式,

每个元素 a(x) 是 GF(2)[x] 中次数小于8的多项式:

例如

每个乘法计算时先将元素转化成一个不可约多项式再进行乘法计算

例如:计算 0x80 乘以 0x32

0x80​​:二进制为 10000000,对应多项式 x7

​0x32​​:二进制为 00110010,对应多项式 x5+x4+x

乘法

转化完成后直接进行乘法计算:

此时发现已经出现了超过7的次幂,需要做的就是将高次项降次,这里需要用到不可约多项式

不可约多项式

不可约多项式具有如下几个特性:

  • ​不可约性​​:多项式 P(x) 在 GF(2)[x] 中无法分解为两个低次多项式的乘积(类似素数在整数中的性质)。
  • ​消除零因子​​:若 P(x) 可约(如 P(x)=Q(x)R(x)),则商环中存在零因子 Q(x) 和 R(x),无法构成域。
  • ​保证域结构​​:不可约多项式确保每个非零元素在模 P(x) 下都有乘法逆元,从而满足域的四个基本运算性质

简单点说就是GF(256)可以使用的不可约多项式就是在256-512之间的所有质数,它的作用就是在GF域中给高次项将次,通过高次项对不可约多项式取模而降次,常用的不可约多项式有:

在本例子中我们取用的不可约多项式为:

降次

上一节计算0x80乘以0x32得到了3个高次项:

分别对三个高次项降次

替换并合并同类项

将降次后的三个项相加,合并同类项,相同次幂相加为0

将最后计算出的结果转化成16进制:

多项式 x6+x5+x3 对应二进制 01101000,即十六进制 ​​0x68​​。

所以:

代码实现

def gf256_multiply(a: int, b: int, poly: int = 0x11B) -> int:"""GF(256) 乘法,直接计算法:param a: 操作数1 (0~255):param b: 操作数2 (0~255):param poly: 不可约多项式 (默认0x11B):return: a × b mod poly"""product = 0for i in range(8):  # 遍历b的每一位if b & 1:       # 如果当前位为1,异或a到productproduct ^= aa <<= 1         # a左移一位(相当于乘以x)if a & 0x100:   # 若a的最高位溢出(超过x^7)a ^= poly   # 异或不可约多项式降次b >>= 1         # b右移一位return product

相关文章:

  • TencentOSTiny
  • 应用宝的NotificationManagerService_post_com.tencent.android.qqdownloader持锁现象
  • Flutter、React Native、Unity 下的 iOS 性能与调试实践:兼容性挑战与应对策略(含 KeyMob 工具经验)
  • 【代码训练营Day01】数组part1
  • 解决Window10上IP映射重启失效的问题
  • 如何加载私钥为 SecKeyRef
  • docker部署redis mysql nacos seata rabbitmq minio onlyoffice nginx实战
  • R 语言科研绘图第 52 期 --- 网络图-分组
  • 英一真题阅读单词笔记 17年
  • TDengine 运维——用户和权限
  • 自回归建模模型(AR)
  • JS手写代码篇---Pomise.race
  • 界面控件DevExpress WinForms v24.2新版亮点:富文本编辑器功能全新升级
  • 程序的 “内存舞台”:深入解析虚拟地址空间与内存管理
  • 运维三剑客——grep
  • 简述MySQL优化锁方面你有什么建议?
  • Bug 背后的隐藏剧情
  • flutter常用动画
  • 新能源工厂环境监控系统如何提升电池生产洁净度
  • 直角坐标系下 dxdy 微小矩形面积
  • html5营销网站建设/百分百营销软件官网
  • 华为公司网站建设方案/西青seo
  • 网站建设专业性的评价内容/国内新闻最新消息简短
  • 弄淘宝招牌图什么网站可以做/百度推广收费
  • 中国互联网上市公司排名/四川游戏seo整站优化
  • 南平做网站/优化培训内容