我在理解这里描述的MixColumns步骤时遇到了问题.
我知道扩散,这一切都有意义,它指出每个列被视为多项式并在GF(2 ^ 8)上乘以模数.
但是......在GF(2 ^ 8)中乘法.虽然域仍然是相同的,但由于mod ......它是不可逆的,并且它必须是可逆的,因为这是它的全部要点.
就第一位而言,我的方法是将A,B,C和D作为列的4个字节,A1,A2,...,A8作为位,E,F,G和H作为输出字节.我准备好了
E = A1,B2,C3,D4,A5,B6,C7,D8 F = D1,A2,B3,C4,D5,A6,B7,C8 G = C1,D2,A3,B4,C5,D6,A7,B8 H = B1,C2,D3,A4,B5,C6,D7,A8
因此它是可逆的,一对一,线性和分配
它后来表明它可以被视为矩阵乘法,但由于矩阵的元素必须是字节并输出为字节,因此矩阵的每个元素必须是模256,因此不可逆和非线性.
我明白这个错了吗?我努力学习数学,并试图了解需要做什么,以便我可以将其转换为逻辑.
MixColumns可能是AES中最难的部分,但是我很兴奋地计算数学并实际看到数字的来源.我在博客文章" 高级加密标准(AES)的棒图指南 "中详细计算了它的数学.具体来说,请看第4幕,第16幕.我还将它的反面放在下一个场景中的婴儿床单上(17).如果您有任何其他问题,请随时在该帖子或此处发表评论.