aes加密

aes加密原理

Posted by Liangjf on October 4, 2019

aes加密

加密原理

对全量明文根据128bit的大小分块加密。按照选择的填充方式来填充最后一个明文块。每个明文块利用AES加密器密钥,加密为密文块。拼接所有的密文块,成为最终的密文结果。

aes加密原理

加密步骤

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模式

  • 每一个明文块的加密都是完全独立,互不干涉的。

ECB模式

好处:

  • 1、简单
  • 2、有利于并行计算

缺点:

  • 1、相同的明文块经过加密会变成相同的密文块,安全性较差。

2、CBC模式

  • 引入初始向量IV。作用和MD5的“加盐”有些类似,目的是防止同样的明文块始终加密成同样的密文块。

CBC模式

好处:

  • 1、安全性更高

坏处:

  • 1、无法并行计算,性能上不如ECB
  • /2、引入初始化向量IV,增加复杂度。