逆向時也做同樣的修改
void MixColumns(unsigned char st[4][4])//列混合
{
for(int j=0;j<4;j++)
{
unsigned char tmp[4] = {0};//臨時變量先保存,最後賦值
tmp[0]=mul(0x02,st[0][j])^mul(0x03,st[1][j])^st[2][j]^st[3][j];
tmp[1]=st[0][j]^mul(0x02,st[1][j])^mul(0x03,st[2][j])^st[3][j];
tmp[2]=st[0][j]^st[1][j]^mul(0x02,st[2][j])^mul(0x03,st[3][j]);
tmp[3]=mul(0x03,st[0][j])^st[1][j]^st[2][j]^mul(0x02,st[3][j]);
st[0][j]=tmp[0];
st[1][j]=tmp[1];
st[2][j]=tmp[2];
st[3][j]=tmp[3];
}
}
mul(x,y) 好像不完整,怎麽沒有5、6、7