这是aes加密算法中的列混淆步骤为什么加密出来的结果不对?求大佬们帮忙看看
unsigned char mul(unsigned char b){
unsigned char sub;
sub=b>=128?((b<<1)^27):(b<<1);//乘0x02
return sub;
}
void colmix(unsigned char a[16])
{
unsigned char b[4][4];
for(int i=0;i<16;i++)
{
b[i/4][i%4]=a[i];
}
for(int i=0;i<4;i++)
{
b[0][i]=mul(b[0][i])^(mul(b[1][i])^b[1][i])^b[2][i]^b[3][i];
b[1][i]=b[0][i]^mul(b[1][i])^(mul(b[2][i])^b[2][i])^b[3][i];
b[2][i]=b[0][i]^b[1][i]^mul(b[2][i])^(mul(b[3][i])^b[3][i]);
b[3][i]=(mul(b[0][i])^b[0][i])^b[1][i]^b[2][i]^mul(b[3][i]);
}
for(int i=0;i<16;i++)
{
a[i]=b[i/4][i%4];
}
}