AES加密算法的详细介绍与实现

我们是有追求的程序员,不能知其然不知其所以然。这一次,我来给大家讲一讲aes算法的底层原理。
上一期我们已经对aes的总体加密流程进行了介绍,在这里我们重新梳理一下:
1.把明文按照128bit拆分成若干个明文块。
2.按照选择的填充方式来填充最后一个明文块。
3.每一个明文块利用aes加密器和密钥,加密成密文块。
4.拼接所有的密文块,成为最终的密文结果。
具体分成多少轮呢?
初始轮(initial round) 1次
普通轮(rounds) n次
最终轮(finalround)1次
上一期我们提到,aes的key支持三种长度:aes128,aes192,aes256。key的长度决定了aes加密的轮数。
除去初始轮,各种key长度对应的轮数如下:
aes128:10轮
aes192:12轮
aes256:14轮
不同阶段的round有不同的处理步骤。
初始轮只有一个步骤:
加轮密钥(addroundkey)
普通轮有四个步骤:
字节代替(subbytes)
行移位(shiftrows)
列混淆(mixcolumns)
加轮密钥(addroundkey)
最终轮有三个步骤:
字节代替(subbytes)
行移位(shiftrows)
加轮密钥(addroundkey)
1.字节替代(subbytes)
首先需要说明的是,16字节的明文块在每一个处理步骤中都被排列成4x4的二维数组。
所谓字节替代,就是把明文块的每一个字节都替代成另外一个字节。替代的依据是什么呢?依据一个被称为s盒(subtitution box)的16x16大小的二维常量数组。
假设明文块当中a[2,2] = 5b(一个字节是两位16进制),那么输出值b[2,2] = s[5][11]。
2.行移位(shiftrows)
这一步很简单,就像图中所描述的:
第一行不变
第二行循环左移1个字节
第三行循环左移2个字节
第四行循环左移3个字节
3.列混淆(mixcolumns)
这一步,输入数组的每一列要和一个名为修补矩阵(fixed matrix)的二维常量数组做矩阵相乘,得到对应的输出列。
4.加轮密钥(addroundkey)
这一步是唯一利用到密钥的一步,128bit的密钥也同样被排列成4x4的矩阵。
让输入数组的每一个字节a[i,j]与密钥对应位置的字节k[i,j]异或一次,就生成了输出值b[i,j]。
需要补充一点,加密的每一轮所用到的密钥并不是相同的。这里涉及到一个概念:扩展密钥(keyexpansions)。
扩展密钥(keyexpansions)
aes源代码中用长度 4 * 4 *(10+1) 字节的数组w来存储所有轮的密钥。w{0-15}的值等同于原始密钥的值,用于为初始轮做处理。
后续每一个元素w[i]都是由w[i-4]和w[i-1]计算而来,直到数组w的所有元素都赋值完成。
w数组当中,w{0-15}用于初始轮的处理,w{16-31}用于第1轮的处理,w{32-47}用于第2轮的处理 ......一直到w{160-175}用于最终轮(第10轮)的处理。
1.ecb模式
ecb模式(electroniccodebookbook)是最简单的工作模式,在该模式下,每一个明文块的加密都是完全独立,互不干涉的。
这样的好处是什么呢?
1.简单
2.有利于并行计算
缺点同样也很明显:
相同的明文块经过加密会变成相同的密文块,因此安全性较差。
2.cbc模式
cbc模式(cipher block chaining)引入了一个新的概念:初始向量iv(initialization vector)。
iv是做什么用的呢?它的作用和md5的“加盐”有些类似,目的是防止同样的明文块始终加密成同样的密文块。
从图中可以看出,cbc模式在每一个明文块加密前会让明文块和一个值先做异或操作。iv作为初始化变量,参与第一个明文块的异或,后续的每一个明文块和它前一个明文块所加密出的密文块相异或。
这样以来,相同的明文块加密出的密文块显然是不一样的。
cbc模式的好处是什么呢?
安全性更高
坏处也很明显:
1.无法并行计算,性能上不如ecb
2.引入初始化向量iv,增加复杂度。

分析影响PCB阻抗的主要因素和阻抗影响不同程度
激光锡球喷射焊接机的工艺介绍
紫光集团联席总裁刁石京怎样看待芯片领域的发展布局
小米5、iPhone7等六款手机抗冻性检测,谁最坚挺?
全波整流器和平均值滤波器:The Full-Wave Rec
AES加密算法的详细介绍与实现
化合物半导体多接合型太阳能电池将实现批量生产
太阳能热水器安装步骤及安装图
至臻高清的技术实现与应用
poe分离器隔离和不隔离的区别
智能传感器是什么?结构组成解析
PCB“有铅”工艺将何去何从?
联想YOGA S740开启预售,搭载英特尔10nm i5处理器
华为陈黎芳:2019年为欧洲贡献164亿欧元GDP产值
华为mate8升级EMUI5.0将全面开放,降价后引爆新购潮
一种基于混合发电的电力系统
NB-IoT已成为5G时代物联网候选技术
华为首获中国移动智能家居二级安全认证
三星Galaxy M10s手机规格曝光,配备6.4英寸AMOLED水滴屏
基于区块链的应用程序“DApp”介绍