【算法】AES算法优化

算法优化主要就是在矩阵相乘中,优化的方式也很简单,就是空间换时间。

AES算法的矩阵是有特点的,矩阵如下:

02  03  01  01

01  02  03  01

01  01  02  03

03  01  01  02

每一竖行都是02 01 01 03 组成。

分析矩阵相乘

02  03  01  01         a1      02*a1 + 03*a2 + 01*a3 + 01*a4     b1

01  02  03  01   *    a2  =  01*a1 + 02*a2 + 03*a3 + 01*a4  = b2

01  01  02  03         a3      01*a1 + 01*a2 + 02*a3 + 03*a4     b3

03  01  01  02         a4      03*a1 + 01*a2 + 01*a3 + 02*a4     b4

可以发现a总是只会和01 02 03 相乘,并且非常重要的个a是有限个为16*16=256个

所以乘法的实现就不用像以前一样每次都去算,可以直接存起来,节约算得时间。

还有一个小技巧是存得时候可以存成4长度向量,比如a1=0x23,向量为 a3 23 23 e3=(02 01 01 03)

存得时候就是256个这种向量

算矩阵乘法就很简单了先找到a1 a2 a3 a4 的向量

a2右移一个位,其实就是(02 01 01 03)=》(03 02 01 01)

a3右移两个位,其实就是(02 01 01 03)=》(01 03 02 01)

a4右移三个位,其实就是(02 01 01 03)=》(01 01 03 02)

由于+算法就是^

把刚才得到的4个向量做一下^,就直接得到向量b=(b1 b2 b3 b4)

到此我们要得结果一下就出来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zfpigpig

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值