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

伽罗华域(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

http://www.xdnf.cn/news/9521.html

相关文章:

  • 前后端传输 Long 类型数据时(时间戳,雪花算法ID),精度丢失的根本原因
  • JavaSE核心知识点04工具
  • WebFuture:后台离开站点提示设置关闭后无效
  • 基于Matlab实现指纹识别系统
  • 一招解决 win10 安装 Abobe PR/AE 打不开或闪退
  • 如何在 Solana 上发币,并创建初始流动性让项目真正“动”起来?
  • 12.Java 对象冷冻术:从用户登录到游戏存档的序列化实战
  • 电子电路:开关电路技术深度解析
  • Ubuntu 24.04 LTS 和 ROS 2 Jazzy 环境中使用 Livox MID360 雷达
  • 2025年软件测试面试八股文(含答案+文档)
  • indel_snp_ssr_primer
  • 简历中项目经历怎么写?
  • 硬件服务器基础
  • C++11:系统类型增强
  • ‌ATR2652S双频GNSS低噪声放大器芯片技术解析
  • unityPc端设置了全屏(Exclusive Fullscreen)但是仍然有白边解决办法
  • 在 Linux 中让 ​​Gunicorn​​ 在后台运行(作为守护进程),有几种常用方法:
  • PHP中实现分布式架构的方法与工具全解析!
  • 【pg学习】-账号管理
  • 深入理解Nginx:详尽配置手册
  • Java复习Day21
  • 立体匹配视差图上色代码
  • OC—UI学习-1
  • GoldenDB管理节点zk部署
  • JavaScript- 4.2 DOM--定位元素
  • 《以撒的结合:四魂》桌游完全解析!
  • 说说线程有几种创建方式
  • 如何将通话记录从Android传输到Android
  • Tomcat- AJP协议文件读取/命令执行漏洞(幽灵猫复现)详细步骤
  • Linux的交换区