前言
请先容许我骂几句,他喵的啥子鬼玩意列混淆,算了一个下午不说,游戏没打,规则又不先给我他喵的说清楚,乱算乱算的,搞得我头皮发麻!
先说一下GF(2n)这是一个叫伽罗瓦域的东西(奇奇怪怪的名字真是)
想要具体研究,可以看下边的文章
伽罗华域(Galois Field)上的四则运算
伽罗华域(Galois Field)理解、基于伽罗华域的四则运算
提示:以下是本篇文章正文内容,下面案例可供参考
一、规则说明
针对题目,我只想说明重点
这里的多项式乘除和平常我们学的不一样
举例子:
例子1:
(X+1)*(X2+X)
=X3+X2+X2+X
=X3+X
也就是说这里在合并同类项的时候,是进行异或,而不是单纯的相加
因为在他这个伽罗华域,是二进制,也就是只能是0和1,不能有23456……
所以合并同类项时直接进行异或
例子2:
a3mod(a3+a+1)
讲道理答案应该是-a-1
但是应为是二进制,系数只能是0和1,1代表存在0代表不存在
所以在它这个规则里头,尽管a和1是负数,为了表示这两个数是存在的
所以直接把符号变成了正号,也就是a+1。
例子3:
X3-X3就等于X3+X3然后等于0
例子4:
例子5:
OK,记住了这些规则我们来做一个就可以了。
补充:
还有更快的方法进行运算
X*01 = X
X*02 = X对应的二进制数 左移一位(因为二进制数乘以2就是左移一位,相当于你十进制数10乘以了10左移成了100)
X*03=X*(02+01)(这个加是单纯的加)=X*02+X(这个加是异或,因为要合并同类项)
二、实例
1.题目
答案:
这里我只演示第一行各值是怎么算出来的
2.演示
-----------------------------------------------------------------------
02*E6⊕03*1B⊕01*50⊕01*18=B2
02=0000 0010=X
E6=1110 0110=X7+X6+X5+X2+X
X*(X7+X6+X5+X2+X)
=X8+X7+X6+X3+X2
因为出现了X8超出了我们的有限域所以这里需要取模
(X8+X7+X6+X3+X2)mod(X8+X4+X3+X+1)
=X7+X6+X4+X2+X+1
=1101 0111
03=0000 0011=X+1
1B=0001 1011=X4+X3+X+1
(X+1)*(X4+X3+X+1)
=X5+X4+X2+X+X4+X3+X+1
=X5+X3+X2+1
=0010 1101
01=0000 0001=1
50=0101 0000=X6+X4
1乘以任何数都得任何数
所以还是0101 0000
同理18=0001 1000
开始异或(xor)
1101 0111
xor 0010 1101
------------------------
->1111 1010
xor 0101 0000
------------------------
->1010 1010
xor 0001 1000
------------------------
->1011 0010
->B2
-----------------------------------------------------------------------
02*B1⊕03*5B⊕01*FD⊕01*79=10
02=0000 0010=X
B1=1011 0001=X7+X5+X4
X*(X7+X5+X4)
=X8+X6+X5
取模(X8+X4+X3+X+1)
=X6+X5+X4+X3+1
=0111 1001
03=0000 0011=X+1
5B=0101 1011=X6+X4+X3+X+1
(X+1)*(X6+X4+X3+X+1)
=X7+X5+X4+X2+X+X6+X4+X3+X+1
=X7+X6+X5+X3+X2+1
=1110 1101
FD=1111 1101
79=0111 1001
开始异或(xor)
0111 1001
xor 1110 1101
------------------------
->1001 0100
xor 1111 1101
------------------------
->0110 1001
xor 0111 1001
------------------------
->0001 0000
->10
-----------------------------------------------------------------------
02*CA⊕03*12⊕01*7C⊕01*04=C1
02=0000 0010=X
CA=1100 1010=X7+X6+X3+X
X*(X7+X6+X3+X)
=X8+X7+X4+X2
取模(X8+X4+X3+X+1)
=X7+X3+X2+1
=1000 1111
03=0000 0011=X+1
12=0001 0010=X4+X
(X+1)*(X4+X)
=X5+X4+X2+X
=0011 0110
7C=0111 1100
04=0000 0100
开始异或(xor)
1000 1111
xor 0011 0110
------------------------
->1011 1001
xor 0111 1100
------------------------
->1100 0101
xor 0000 0100
------------------------
->1100 0001
->C1
-----------------------------------------------------------------------
02*B7⊕03*7F⊕01*7B⊕01*23=AC
02=0000 0010=X
B7=1011 0111=X7+X5+X4+X2+X+1
X*(X7+X5+X4+X2+X+1)
=X8+X6+X5+X3+X2+X
取模(X8+X4+X3+X+1)
=X6+X5+X4+X2+1
=0111 0101
03=0000 0011=X+1
7F=0111 1111=X6+X5+X4+X3+X2+X+1
(X+1)*(X6+X5+X4+X3+X2+X+1)
=X7+X6+X5+X4+X3+X2+X+X6+X5+X4+X3+X2+X+1
=X7+1
=1000 0001
7B=0111 1011
23=0010 0011
开始异或(xor)
0111 0101
xor 1000 0001
------------------------
->1111 0100
xor 0111 1011
------------------------
->1000 1111
xor 0010 0011
------------------------
->1010 1100
->AC
结语
文章写了3个小时,你看到的0和1,还有这里的上标都是我用手慢慢敲出来的,
其实本来想用手写的,但觉得电子版可能阅读性更好些所以想想还是算了
这是写文章的过程,一小部分节选
有问题就留言吧٩(๑>◡<๑)۶