【AES加密】列混淆GF(2^8)


前言

请先容许我骂几句,他喵的啥子鬼玩意列混淆,算了一个下午不说,游戏没打,规则又不先给我他喵的说清楚,乱算乱算的,搞得我头皮发麻!
在这里插入图片描述
先说一下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,还有这里的上标都是我用手慢慢敲出来的,
其实本来想用手写的,但觉得电子版可能阅读性更好些所以想想还是算了
这是写文章的过程,一小部分节选

在这里插入图片描述
请添加图片描述

有问题就留言吧٩(๑>◡<๑)۶

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值