AES MixColumns 列混淆.md

本文深入探讨了AES加密标准中的核心组件,包括S-box替换、shiftRows行变换与MixColumns列混淆等过程。详细解析了基于有限域GF(2^8)的加法与乘法运算原理,展示了具体的矩阵运算实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自我的笔记: http://caf99af3.wiz03.com/share/s/3a-pHP3y4ABk2SLM5t03faoi0l_0X73Ex4342GXNjU2XHnrH

  1. S-box s盒替换
  2. shiftRows行变换
  3. MixColumns 列混淆

这个部分会接受4个字节的输入,并输出4个字节
在这里插入图片描述

AES 所用的加法和乘法是基于数学(译者注:近世代数)的域论。尤其是 AES 基于有限域GF(28)。加法是异或操作
b ∗ 0 x 03 = b ∗ ( 0 x 02 + 0 x 01 ) = ( b ∗ 0 x 02 ) + ( b ∗ 0 x 01 ) b * 0x03 = b * (0x02 + 0x01) = (b * 0x02) + (b * 0x01) b0x03=b(0x02+0x01)=(b0x02)+(b0x01)
b ∗ 0 x 0 d = b ∗ ( 0 x 08 + 0 x 04 + 0 x 01 ) = ( b ∗ 0 x 08 ) + ( b ∗ 0 x 04 ) + ( b ∗ 0 x 01 ) = ( b ∗ 0 x 02 ∗ 0 x 02 ∗ 0 x 02 ) + ( b ∗ 0 x 02 ∗ 0 x 02 ) + ( b ∗ 0 x 01 ) b * 0x0d = b * (0x08 + 0x04 + 0x01) = (b * 0x08) + (b * 0x04) + (b * 0x01) = (b * 0x02 * 0x02 * 0x02) + (b * 0x02 * 0x02) + (b * 0x01) b0x0d=b(0x08+0x04+0x01)=(b0x08)+(b0x04)+(b0x01)=(b0x020x020x02)+(b0x020x02)+(b0x01)
这步中与输入矩阵相乘的矩阵中的值来自 0x01、0x02、0x03、0x09、0x0b、0x0d 0x0e, 顺序如何确定提问中… ,已有前辈解答,该矩阵是固定死的。

这下来看左上方的 04 是怎么得来的:

0xd4 * 0x02 ⊕ 0xbf * 0x03 ⊕ 0x5d * 0x01 ⊕ 0x30 * 0x01
= 0xd4 * 0x02 ⊕ xbf * 0x02 ⊕ 0xbf * 0x01 ⊕ 0x5d * 0x01 ⊕ 0x30 * 0x01
=0xd4*0x02 ⊕ xbf*0x02 ⊕ 0xbf ⊕ 0x5d ⊕ 0x30   (注意这里的0xd4*02就是0xd4左移一位,然后异或0x1b (0001 1011)哦,加法就是求异或)
=1010 1000 ⊕ 0001 1011 ⊕ 0111 1110 ⊕ 0001 1011 ⊕ 1011 1111 ⊕ 0101 1101 ⊕ 00110000
=0000 0100
=0x04
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值