模运算

除法定理
Z={⋯,−1,0,1,⋯}\mathbb{Z}=\{\cdots,-1,0,1,\cdots\}Z={⋯,−1,0,1,⋯}为整数集,对任何整数a和任何正整数n存在唯一整数q和r,满足{r:0≤r<n,r∈Z}\{r:0\le r<n,r\in \mathbb{Z}\}{r:0≤r<n,r∈Z},且a=qn+ra=qn+ra=qn+r。称q=⌊a/n⌋q=\left \lfloor a/n \right \rfloorq=⌊a/n⌋为除法的,⌊⌋\lfloor \rfloor⌊⌋表示向下取整, r≡amodnr\equiv a \mod nr≡amodn为除法的余数。
简单例子
19mod11≡8mod1119\mod 11\equiv 8\mod1119mod11≡8mod11
−7mod11≡4mod11-7 \mod 11\equiv 4\mod11−7mod11≡4mod11
模运算的好处:一些程序进行线性运算的时候,由于存储空间大小是固定的,可能存在结果溢出的情况,模运算可以将xxx结果始终确定在一个范围即{x:0≤x<n,x∈Z}\{x:0\le x<n,x\in \mathbb{Z}\}{x:0≤x<n,x∈Z}内,从而避免溢出。

有限群

群(S,⊕)(S,\oplus )(S,⊕)是集合SSS和二元运算符⊕\oplus⊕组成,顾名思义群中的元素个数是有限的。对于该运算应该满足以下性质:

  • 封闭性:对于任意a,b∈Sa,b\in Sa,b∈S,有a⊕b∈Sa\oplus b \in Sa⊕b∈S。
  • 单位元:存在一个元素e∈Se \in Se∈S,称eee为单位元,对所有a∈Sa\in Sa∈S,满足e⊕a=a⊕e=ae \oplus a=a\oplus e = ae⊕a=a⊕e=a。
  • 结合律:对任意a,b,c∈Sa,b,c\in Sa,b,c∈S,有(a⊕b)⊕c=a⊕(b⊕c)(a\oplus b)\oplus c=a\oplus(b\oplus c)(a⊕b)⊕c=a⊕(b⊕c)。
  • 逆元:对任意a∈Sa\in Sa∈S,存在b∈Sb\in Sb∈S,满足a⊕b=b⊕a=ea\oplus b=b\oplus a=ea⊕b=b⊕a=e。

模n加法群

定义群(Zn,+n)(\mathbb{Z}_n,+_n)(Zn​,+n​),其中Zn={x∣0≤x<n,x∈Z}\mathbb{Z}_n=\{x|0\le x<n,x\in\mathbb{Z}\}Zn​={x∣0≤x<n,x∈Z},+n+_n+n​指在模n上的加法,即a+nb=a+bmodna+_n b = a+b\mod na+n​b=a+bmodn,群(Z5,+5)(\mathbb{Z}_5,+_5)(Z5​,+5​)的运算表为

+5+_5+5​ 0 1 2 3 4
0 0 1 2 3 4
1 1 2 3 4 0
2 2 3 4 0 1
3 3 4 0 1 2
4 4 0 1 2 3

在该群中单位元为0,0的逆元为0,1的逆元为4。

模n乘法群

定义群(Zn∗,⋅n)(\mathbb{Z}_n^*,\cdot_n)(Zn∗​,⋅n​),其中Zn∗={x∈Zn∣gcd(a,n)=1}\mathbb{Z}^*_n=\{x\in \mathbb{Z}_n|gcd(a,n)=1\}Zn∗​={x∈Zn​∣gcd(a,n)=1},gcd(a,n)gcd(a,n)gcd(a,n)表示求a和n的最大公因数,若两数的最大公因数为1则两个数互素,⋅n\cdot_n⋅n​指在模n上的乘法,即a⋅nb=a⋅bmodna \cdot_nb=a\cdot b \mod na⋅n​b=a⋅bmodn,群(Z8∗,⋅8)(\mathbb{Z}_8^*,\cdot_8)(Z8∗​,⋅8​)的运算表为

⋅8\cdot_8⋅8​ 1 3 5 7
1 1 3 5 7
3 3 1 7 5
5 5 7 1 3
7 7 5 3 1

注意Z8∗={1,3,5,7}≠{0,1,2,3,4,5,6,7}\mathbb{Z}_8^*=\{1,3,5,7\}\ne\{0,1,2,3,4,5,6,7\}Z8∗​={1,3,5,7}​={0,1,2,3,4,5,6,7},因为0,2,4,6和8并不互素。
构造(Z8,⋅8)(\mathbb{Z}_8,\cdot_8)(Z8​,⋅8​)的运算表如下

⋅8\cdot_8⋅8​ 0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7
2 0 2 4 6 0 2 4 6
3 0 3 6 1 4 7 2 5
4 0 4 0 4 0 4 0 4
5 0 5 2 7 4 1 6 3
6 0 6 4 2 0 6 4 2
7 0 7 6 5 4 3 2 1

该运算并不存在逆元,因而不能构成群。

当nnn取素数时,Zn∗={1,2,…,n−1}\mathbb{Z}^*_n=\{1,2,\dots,n-1\}Zn∗​={1,2,…,n−1},因为n必然与比其小的所有数互素。

⋅5\cdot_5⋅5​ 1 2 3 4
1 1 2 3 4
2 2 4 1 3
3 3 1 4 2
4 4 3 2 1

异或群

定义群(Zn,⊕)(\mathbb{Z}_n,\oplus)(Zn​,⊕),其中Zn={x∣0≤x<n,x∈Z}\mathbb{Z}_n=\{x|0\le x<n,x\in\mathbb{Z}\}Zn​={x∣0≤x<n,x∈Z},⊕\oplus⊕指异或运算,群(Z4,⊕)(\mathbb{Z}_4,\oplus)(Z4​,⊕)的运算表为

⊕\oplus⊕ 0 1 2 3
0 0 1 2 3
1 1 0 3 2
2 2 3 0 1
3 3 2 1 0

显然此时,单位元为0,任何元素的逆元为其自身。

伽罗华域

伽罗华域也称为有限域,域(R,+,−,⋅,÷)(R,+,-,\cdot,\div)(R,+,−,⋅,÷)由运算元素集合和四则运算组成,由于减法、除法分别和加法、乘法是逆运算关系,只需要关注加法和乘法即可。对于加法来说,每个元素要求有对应的加法逆元;对于乘法来说,除0以外的每个元素要求要有对应的乘法逆元。关于群、环、域的概念进一步了解可阅读这篇博客。

伽罗华域GF(q)GF(q)GF(q)表示

qqq指有限域的阶,在有限域中阶等于元素个数,有限域的阶通常是素数PPP或是素数幂PWP^WPW,即q=P或PWq = P 或P^Wq=P或PW。

有限域GF(P)GF(P)GF(P)

GF(P)GF(P)GF(P)被称为P阶素数域,PPP为素数。运算元素的集合为Zp\mathbb{Z}_pZp​,加法和乘法运算要在模p上进行,即此时的加法和乘法运算分别为+p,⋅p+_p,\cdot _p+p​,⋅p​。在GF(P)GF(P)GF(P)上a≡bmodPa\equiv b \mod Pa≡bmodP与a=b相同,这意味着a=b→a=kn+b,k∈Za = b \to a=kn+b,k \in \mathbb{Z}a=b→a=kn+b,k∈Z。当PPP为素数时,显然所有大于0小于p的整数和是互素的,根据上面介绍的模n乘法群的概念,显然除去0以外,每个元素都能找到其逆元。
对于GF(2)GF(2)GF(2),仅包含了元素0和1,加法表为

+ 0 1
0 0 1
1 1 0(1+1=2mod2≡0mod2)0 \ (1+1 =2 \mod 2\equiv 0 \mod 2)0 (1+1=2mod2≡0mod2)

乘法表为

⋅\cdot⋅ 0 1
0 0 0
1 0 1

有限域GF(Pw)GF(P^w)GF(Pw)

当n>1n>1n>1时,GF(Pw)GF(P^w)GF(Pw)可以表示为系数属于GF(P)GF(P)GF(P)等价域上的多项式,www表示多项式不能超过的阶。举个栗子,对于GF(34)GF(3^4)GF(34),来说其包含了多项式0,1,2,x+1,x+2,2x,2x+1,2x+2,x2+x,x2+x+1,⋯,2x3+2x2+2x+20,1,2,x+1,x+2,2x,2x+1,2x+2,x^2+x, x^2+x+1,\cdots,2x^3+2x^2+2x+20,1,2,x+1,x+2,2x,2x+1,2x+2,x2+x,x2+x+1,⋯,2x3+2x2+2x+2,即多项式系数为0,1,2,此时w=4w=4w=4,多项式阶数不能超过4,符合这两个条件的多项式个数为PwP^wPw,注意这里的有限域的集合中的元素可以看成多项式,即加法和乘法是指多项式的加法和乘法,特殊之处在于对于计算后的各项系数需要取模PPP,同时对整体还需要取模f(x)f(x)f(x)。参考GF(P)GF(P)GF(P)的取模方法,这里取的模f(x)f(x)f(x)也应该是多项式,关于多项式的运算规则可以查看这篇博客。接下来我会举出大量栗子帮助理解。
对于GF(23)GF(2^3)GF(23),其包含了元素有8个分别为0,1,x,x+1,x2,x2+1,x2+x,x2+x+10,1,x,x+1,x^2,x^2+1,x^2+x,x^2+x+10,1,x,x+1,x2,x2+1,x2+x,x2+x+1
其可取的模为x3+x2+1x^3+x^2+1x3+x2+1,x3+x+1x^3+x+1x3+x+1
在有限域GF(2w)GF(2^w)GF(2w)中,需要对多项式各项系数取模2
(x+1)2=x2+2x+1≡x2+1(x+1)^2=x^2+2x+1\equiv x^2+1(x+1)2=x2+2x+1≡x2+1
3x2−x−1≡x2+x+13x^2-x-1\equiv x^2+x+13x2−x−1≡x2+x+1
(x+1)3=x3+3x2+3x+1≡x3+x2+x+1(x+1)^3=x^3+3x^2+3x+1\equiv x^3+x^2+x+1(x+1)3=x3+3x2+3x+1≡x3+x2+x+1
在有限域GF(3w)GF(3^w)GF(3w)中,需要对多项式各项系数取模3
(x+1)2≡x2+2x+1(x+1)^2\equiv x^2+2x+1(x+1)2≡x2+2x+1
3x2−x−1≡2x+23x^2-x-1\equiv 2x+23x2−x−1≡2x+2
(x+1)3≡x3+1(x+1)^3\equiv x^3+1(x+1)3≡x3+1
接下来需要进行取模,模为f(x)f(x)f(x),这个模等同于不可约多项式或是本原多项式,本原多项式是不可约多项式的特例,即在不可约多项式中除去最高阶的项,剩余项的阶最小那个多项式定义为本原多项式。希望对不可约多项式和本原多项式有更多了解的,可以参考这篇博客。对于GF(23)GF(2^3)GF(23),模可以取x3+x2+1x^3+x^2+1x3+x2+1或x3+x+1x^3+x+1x3+x+1,这两个多项式也就是阶为3的不可约多项式。
再列举几个计算案例
在GF(23)GF(2^3)GF(23),模取x3+x+1x^3+x+1x3+x+1 ,计算4x5+3x3+1modx3+x+14x^5+3x^3+1 \mod x^3+x+14x5+3x3+1modx3+x+1
回想整数除法11/5=2余111/5=2余111/5=2余1,11≡1mod511\equiv 1\mod 511≡1mod5
(4x5+3x3+1)x3+x+1=4x2−1+−4x2+x+2x3+x+1\frac{\left(4x^5+3x^3+1\right)}{x^3+x+1}=4x^2-1+\frac{-4x^2+x+2}{x^3+x+1}x3+x+1(4x5+3x3+1)​=4x2−1+x3+x+1−4x2+x+2​
那这里余项为−4x2+x+2-4x^2+x+2−4x2+x+2,即4x5+3x3+1modx3+x+1≡−4x2+x+2modx3+x+1(注意这里是对各项系数取模2,与多项式的模无关)≡xmodx3+x+14x^5+3x^3+1 \mod x^3+x+1 \equiv-4x^2+x+2\mod x^3+x+1(注意这里是对各项系数取模2,与多项式的模无关)\equiv x \mod x^3+x+14x5+3x3+1modx3+x+1≡−4x2+x+2modx3+x+1(注意这里是对各项系数取模2,与多项式的模无关)≡xmodx3+x+1
或者先对4x5+3x3+14x^5+3x^3+14x5+3x3+1系数先取模2,即4x5+3x3+1=x3+14x^5+3x^3+1=x^3+14x5+3x3+1=x3+1
x3+1x3+x+1=1+−xx3+x+1\frac{x^3+1}{x^3+x+1}=1+\frac{-x}{x^3+x+1}x3+x+1x3+1​=1+x3+x+1−x​,对余项−x-x−x的系数−1-1−1取模2,结果为xxx。
再举一个例子
(1+2m)x2+(1+2n)x≡x2+xmodx3+x+1(1+2m)x^2+(1+2n)x\equiv x^2+x \mod x^3+x+1(1+2m)x2+(1+2n)x≡x2+xmodx3+x+1,其中m,n∈Zm,n\in \mathbb{Z}m,n∈Z

多项式 模为x3+x2+1x^3+x^2+1x3+x2+1 二进制 模为x3+x2+1x^3+x^2+1x3+x2+1 多项式 模为x3+x+1x^3+x+1x3+x+1 二进制 模为x3+x+1x^3+x+1x3+x+1
0 0 000 0 000
x0x^0x0 1 001 0 001
x1x^1x1 xxx 010 2 010
x2x^2x2 x2x^2x2 100 x2x^2x2 100
x3x^3x3 x2+1x^2+1x2+1 101 x+1x+1x+1 011
x4x^4x4 x2x^2x2 100 x2+xx^2+xx2+x 110

伽罗华域(有限域)及其运算规则(包含大量例子)相关推荐

  1. 伽罗华域(Galois Field)有限域元素生成和运算原理

    存储编码,矩阵等之间的运算都是在伽罗华域(Galois Field,GF,有限域)上进行的,所以要实现底层的运算库,必须了解 GF 上的运算规则. 域: 一组元素的集合,以及在集合上的四则运算,构成一 ...

  2. 有限域(Galois Field,GF,伽罗华域)的乘法原理

    今天在打AES的代码,打到列混合变换的时候对有限域的乘法不是很熟悉,但是查了很多资料结合书本最后算是弄会了,分享一下自己的心得 这里是引用在密码学中经常用到有限域的乘法,一般在AES中用到的是GF(2 ...

  3. 伽罗华域(Galois Field,GF,有限域)

    原文见链接DataMatrix 编码生成和译码原理即方法 原文见链接存储系统中的纠删码(Erasure Codes)-XOR 码和RS 码 原文见链接(讲的很好)Galois 域上的运算(规则) 原文 ...

  4. 伽罗华域(Galois Field, GF, 有限域)的四则运算

    有限域的构造之常见本原多项式 伽罗华域(Galois Field,GF,有限域)乘法运算 伽罗华域(Galois Field)理解.基于伽罗华域的四则运算(附详细python代码)

  5. 伽罗华域(伽罗瓦域,Galois Field,GF,有限域)

    原文见链接DataMatrix 编码生成和译码原理即方法 原文见链接存储系统中的纠删码(Erasure Codes)-XOR 码和RS 码 原文见链接(讲的很好)Galois 域上的运算(规则) 原文 ...

  6. 伽罗华域GF,GF(256)来源

    Galois Field 1. 域 2. 域中单位元和逆元 3. 有限域GF(p)(p)(p) 4. 有限域GF(2p)(2^p)(2p) 4.1 有限域GF(2p)(2^p)(2p)的生成 4.2 ...

  7. c语言实现伽罗华域乘法器,伽罗华域运算及C语言实现

    伽罗华域(Galois Field)简介 在数学中,有限域(或称伽罗华域)是一个包含有限元素的域.与其他域一样,有限域是进行加减乘除运算都有定义并且满足特定规则的集合.其中加法和乘法必须满足交换.结合 ...

  8. 伽罗华域上(Galois Field)上的四则运算-笔记

    原网页:https://blog.csdn.net/shelldon/article/details/54729687 单位元:a∗e=e∗a=aa*e=e*a=aa∗e=e∗a=a 本原多项式:域中 ...

  9. 伽罗华域下的伪随机序列图像编码(一)

    最近看了一篇TPAMI文章Determining Both Surface Position and Orientation in Structured-Light-Based Sensing ,是用 ...

  10. 伽罗华域(Galois Field)理解、基于伽罗华域的四则运算(附详细python代码)

    参考链接:https://blog.csdn.net/luotuo44/article/details/41645597 参考链接:https://blog.csdn.net/shelldon/art ...

最新文章

  1. python bindings_OpenCV-Python Bindings 如何工作 | 六十四
  2. 人工智能的策略,如果国家优先发展”梦想成真”?
  3. OpenStack(二)——Keystone组件
  4. AUTOSAR从入门到精通100讲(三十三)-AutoSar架构中的诊断事件管理
  5. nvidia控制面板点了没反应win7_win7系统Nvidia控制面板怎么设置?
  6. signature=7a6addc49a87cb6a44a8da5a20a59d1f,Disks and Halos in Pre-Main-Sequence Stars
  7. Linux时间子系统之八:动态时钟框架(CONFIG_NO_HZ、tickless)【转】
  8. 服务器系统如何安装文件损坏,安装系统提示winload.exe故障,文件丢失损坏
  9. 使用vue + fastapi在heroku上搭建线报网站
  10. C4D模型工具—平面切割
  11. 在win服务器查看系统报错日志文件,win2003查看及管理系统日志的方法
  12. 致谢-10224051-RAL
  13. 专业物联网数据采集解决方案,专业无线传感器,专业非接触测量数据采集,非侵入式数据采集
  14. 北京大学肖臻老师《区块链技术与应用》ETH笔记 - 8.0 ETH挖矿难度的调整
  15. 获取referer中的请求参数_javaweb之request获取referer请求头实现防盗链
  16. 实验三matlab实现,实验三matlab程序设计.docx
  17. 逆透视变换车道线检测
  18. 易语言简单易学,为何无人问津,国产编译语言究竟怎么样?小编带你看
  19. 爬取通过ajax动态加载的页面(实时监控华尔街见闻资讯与快讯)
  20. 梦幻手游服务器总维护,梦幻西游手游7.13维护解读 维护内容详细分析

热门文章

  1. Excel数据分析案例一——业绩达成分析
  2. pandas读取数据库,将结果使用matplotlib绘制成二维表格图片
  3. csdn编辑器公式中插入空格
  4. 2021-07-20 诺瓦星云笔试复盘
  5. 16行代码实现微信聊天机器人,自动智能回复,打团了让它来陪老婆聊天
  6. 调色板 palette 详解
  7. bjui刷新当前页签
  8. 【JY】YJK前处理参数详解及常见问题分析(六):地震信息
  9. mysql 网页_mysql网页客户端工具
  10. linux i2c驱动协议