MixColumn变换

来源:百度知道 编辑:UC知道 时间:2024/06/08 12:53:00
这个应该是MixColumn变换,但我看不明白,谁能帮我解释一下?先谢谢了。
如果好的话,可以再加分数!

这个应该是AES加密中的列混合步骤
首先要明白一个运算,加法:这里的加法是异或运算,比如04+1d=19
乘法:乘法有点复杂,这里只用到乘01,02,03,会算这几个就能算出结果了
x乘01:就是x本身
x乘02:把x左移一位,如果会溢出(原先x最高位为1),加(异或)1b
比如d4*02,d4最高位为1,左移一位变a8,加1b,结果为b3
比如5d*02,5d最高位为0,左移一位变ba,不加1b
x乘03:x * 03 = (x * 02)+ x,用前两个方法计算

然后就是矩阵乘法,可能这个图有点问题,如果能把乘法两边反一下就好了
[02 03 01 01] [d4]
[01 02 03 01] * [bf]
[01 01 02 03] [5d]
[03 01 01 02] [30]
结果第一行04是这么算的,左边矩阵第一行,分别乘以右边矩阵第一列,分别相加,02*d4+03*bf+01*5d+01*30 = 04
第二行依此类推,左边矩阵第二行 01*d4+02*bf+03*5d+01*30 = 66
...
手算确实比较麻烦
希望我说明白了

这个应该是AES加密中的列混合步骤
首先要明白一个运算,加法:这里的加法是异或运算,比如04+1d=19
乘法:乘法有点复杂,这里只用到乘01,02,03,会算这几个就能算出结果了
x乘01:就是x本身
x乘02:把x左移一位,如果会溢出(原先x最高位为1),加(异或)1b
比如d4*02,d4最高位为1,左移一位变a8,加1b,结果为b3
比如5d*02,5d最高位为0,左移一位变ba,不加1b
x乘03:x * 03 = (x * 02)+ x,用前两个方法计算

然后就是矩阵乘法,可能这个图有点问题,如果能把乘法两边反一下就好了
[02 03 01 01] [d4]
[01 02 03 01] * [bf]
[01 01 02