AES算法

AES的由来

前面一篇文章咱们讲到了DES算法。鉴于DES能够被破解和加密效率不高的缺陷。美国的NIST(National Institute of Standards and Technology,国家标准技术研究所)在2000年经过选拔,从多个候选算法中确认了Rijndael算法为最新的AES算法,成为联邦信息处理标准(FIPS)。算法

什么是Rijndael

Rijndael是由比利时密码学家Joan Daemen和Vincent Rijmen设计的分组密码算法。它在2000年被当选为AES算法。加密

注意,虽然AES是一种密码强度很高的对称密码算法,可是若是须要商用的话要向NIST支付受权费用。

Rijndael的原理

跟DES同样,Rijndael也是由多轮运算组成的。其中每一轮都包括:SubBytes,ShiftRows,MixColumns和AddRoundKey这四个步骤。spa

下面咱们分别来说一下各个步骤的做用。设计

SubBytesblog

在AES的规范中,Rijindael的分组长度固定为128bits,密钥长度有128,192和256bits三种。教程

128bits就是16字节。一个字节能够表示0-255的任意值。而SubBytes就是根据其值在一个拥有256个值的替换表中查找出对应的值进行处理。rem

为了便于理解,你们能够将其当作是简单的替换。get

ShiftRows博客

SubBytes 以后,咱们就能够进行shiftRows的操做了。it

因为咱们的源字节是16bytes,能够将其当作4*4 的一个矩阵。

ShiftRows就是将一行4字节按照必定的规则向左平移,如今有4行,每一行的平移字节数是不一样的。

MixColumns

ShiftRows以后就是MixColumns,MixColumns是在4字节的列上面进行必定的运算,将其变为另外的4字节列。

AddRoundKey

最后将生产的字节和密钥进行XOR运算,最后生产结果。一般须要重复进行10-14轮运算。

Rijndael的特色

  1. 输入的全部bits都会在一轮里面被加密。同DES相比,AES的加密效率更加高效。
  2. Rijndael 加密过程为:SubBytes->shiftRows->MixColumns->AddRoundKey , 解密的时候须要按照相反的流程来进行:AddRoundKey->MixColumns->shiftRows->SubBytes。 注意,除了AddRoundKey是XOR运算不须要逆运算以外,其余的步骤都须要进行逆运算。

更多教程请参考 flydean的博客

相关文章
相关标签/搜索