c语言 int column,求AES加密中MixColumn函数的C语言写法

这篇博客深入解析了AES算法中的MixColumns函数,展示了如何通过线性变换和GF(2^8)中的多项式运算实现矩阵乘法,强调了ShiftRows和MixColumns在提供密码系统扩散性上的作用。参考链接提供了额外的学习资源。
摘要由CSDN通过智能技术生成

/* xtime is a macro that finds the product of {02} and the argument to xtime modulo {1b}*/#define xtime(x)   ((x<<1) ^ (((x>>7) & 1) * 0x1b))/* MixColumns function mixes the columns of the state matrix*/void MixColumns(){    int i;    unsigned char Tmp,Tm,t;    for(i=0;i<4;i++)    {            t=state[0][i];        Tmp = state[0][i] ^ state[1][i] ^ state[2][i] ^ state[3][i] ;        Tm = state[0][i] ^ state[1][i] ; Tm = xtime(Tm); state[0][i] ^= Tm ^ Tmp ;        Tm = state[1][i] ^ state[2][i] ; Tm = xtime(Tm); state[1][i] ^= Tm ^ Tmp ;        Tm = state[2][i] ^ state[3][i] ; Tm = xtime(Tm); state[2][i] ^= Tm ^ Tmp ;        Tm = state[3][i] ^ t ; Tm = xtime(Tm); state[3][i] ^= Tm ^ Tmp ;    }}这是我在网上找的,我最近也在学习AES,相互学习吧~~其实我也没有看懂学习一下吧。在MixColumns步骤,每一直行的四个字节通过线性变换互相结合。每一直行的四个元素分别当作1,x,x^2,x^3的系数,合并即为GF(2^8)中的一个多项式,接着将此多项式和一个固定的多项式c(x)=3x^3+x^2+x+2在modulo x^4+1下相乘。此步骤亦可视为 Rijndael有限域之下的矩阵乘法。MixColumns函数接受4个字节的输入,输出4个字节,每一个输入的字节都会对输出的四个字节造成影响。因此ShiftRows和MixColumns两步骤为这个密码系统提供了扩散性。参考:http://zh.wikipedia.org/wiki/%E9%AB%98%E7%BA%A7%E5%8A%A0%E5%AF%86%E6%A0%87%E5%87%86或者你可以看看酷壳里面的一个动画,也很清楚~~http://coolshell.cn/articles/3161.html

阅读全文 >

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值