AES加密算法

  1. AES
  2. AES加密步骤
    1. 初始代换
    2. 9轮循环运算
      1. 字节代换
      2. 行移位
      3. 列混合
      4. 轮密相加
        1. 密钥扩展
          1. T函数
    3. 总结

AES

高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用 是对称加密算法

aes属于分组加密算法, AES算法在对明文加密的时候,并不是把整个明文一股脑加密成一整段密文,而是把明文拆分成一个个独立的明文块,每一个明文块长度128bit。

明文长度是128位,密钥的长度可以是128、198、256

密钥长度每增加64位,算法的循环次数多增加两轮,比如说128次是10轮,198是12轮,

我们在之前要确实明文长度是128位,密钥长度也是128位

我们将数据以一个4x4的矩阵来表示,不管是明文块,还是密钥块,还是加密输出之后的密文块,都是以16字节的 4X4 矩阵来表示的,

AES加密步骤

AES加解密过程如下图所示:

初始代换

明文转为16字节矩阵,然后跟密钥的16进制矩阵进行异或操作,

9轮循环运算

字节代换

输入的数据通过查表,把每个数进行一个代换,注意看 19是第一行第9列 不是第9行第一列

可以对比一下

行移位

我们根据上图进行移位

列混合

这个矩阵是给定的

第十轮循环运算不进行列混合

那两个矩阵如何运算呢?这和普通的矩阵不一样 本来矩阵相乘 是02乘于d4+03乘于bf·····

但是此时是02乘于d4异或03乘于bf······

看上图第一行,00000010是02,如果a7=0 直接输出A6A5A4A3A2A1A0再补一个0意思就是左移一位低位补零,如果a7=1,就原式子跟00011011异或

举个例子

我们再往下看一行 03和04,也都是根据上图的运算规则

轮密相加

我们一步步得到的结果与子密钥一列一列进行逐字节的异或

密钥扩展

我们一开始是4X4矩阵,我们设第一列是w0 第二列w1

第i 列就是wi

上图右图是i不是4的倍数,如果是4的倍数

T函数

这就得到了我们每轮所需要的密钥了

总结


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 1204342476@qq.com

💰

×

Help us with donation