反向MixColumns AES Rijndael算法

时间:2015-11-18 01:59:13

标签: c algorithm recursion encryption rijndael

我目前正在用c编写AES实现,我在计算MixColumn的反函数时遇到了问题。我的函数是递归的,因为在确定如何对09,0E,0D和0B mod x ^ 4 + 1进行乘法和加法时最有意义。

unsigned char multiplyByte(unsigned char c, unsigned char f){
    unsigned char result = 0;
    if(f==1){
        return c;
    }else if(f==2){
        return = c << 1;
    }else if(f & 1){
        return multiplyByte(((c << 1) ^ c) ^ ((c & 0x80) >> 7 ? 0x1b : 0x00), f/2);
    }else{
        return multiplyByte((c << 1) ^ ((c & 0x80) >> 7 ? 0x1b : 0x00), f/2);
    }
    return result;
}

c是乘以的字节,f是因子。

我试图在纸上理解这一点,其中c值为0x47,f为0x0E。使用答案here和表格here。如果我在纸上解决这个问题,我会得到......

0x47 x 0x0E:

<(>(((((X x 2)+ X)x 2)+ X)x 2)

如果添加只是XOR,那么这应该相当于..

0x47 x 0x03 =(0x47&lt;&lt; 1 XOR 47)= 0xC9

所以,

(((0xC9 x 2)+ 0xC9)x 2)= 0x47 x 0x0E =

(0x40)x 2 = 0x80。

但是,根据第二个链接中的表格,我期待0x87。

0 个答案:

没有答案