aes加密
加密原理
对全量明文根据128bit的大小分块加密。按照选择的填充方式来填充最后一个明文块。每个明文块利用AES加密器和密钥,加密为密文块。拼接所有的密文块,成为最终的密文结果。
加密步骤
AES是经过多轮加密的。如下:
- 初始轮(Intial Round) 1次
- 普通轮(Rounds) n次
- 最终轮(Final Round) 1次
AES的Key支持三种长度:
- AES128
- AES192
- AES256
Key的长度决定了AES加密的轮数。
除去初始轮,各种Key长度对应的轮数如下:
- AES128:10轮
- AES192:12轮
- AES256:14轮
不同阶段的处理步骤
- 初始轮:
- 加轮密钥(AddRoundKey)
- 普通轮:
- 字节代替(SubBytes)
- 行移位(ShiftRows)
- 列混淆(MixColumns)
- 加轮密钥(AddRoundKey)
- 最终轮:
- 字节代替(SubBytes)
- 行移位(ShiftRows)
- 加轮密钥(AddRoundKey)
常用加密工作模式
1、ECB模式
- 每一个明文块的加密都是完全独立,互不干涉的。
好处:
- 1、简单
- 2、有利于并行计算
缺点:
- 1、相同的明文块经过加密会变成相同的密文块,安全性较差。
2、CBC模式
- 引入初始向量IV。作用和MD5的“加盐”有些类似,目的是防止同样的明文块始终加密成同样的密文块。
好处:
- 1、安全性更高
坏处:
- 1、无法并行计算,性能上不如ECB
- /2、引入初始化向量IV,增加复杂度。