Rijndael加密算法是1997年AES高级加密标准全球海选的获胜者,可以将它认为是AES高级加密标准的前身,但它和AES还是存在一定区别的,今天我们就来简单了解一下。

Rijndael加密算法简介

Rijndael加密算法由比利时计算机科学家Vincent Rijmen和Joan Daemen所开发的,最终因其各项数据的优异表现,成功当选AES高级加密标准。

Rijndael加密算法

Rijndael和AES的区别

Rijndael的分组长度和密钥长度可以分别以32比特为单位,在128比特和256比特的范围内进行选择。

而在AES的规格中,分组长度固定为128比特,密钥长度只有128、192和256比特三种。

Rijndael算法的加密流程

Rijndael算法也是由多轮构成的,其中每一轮分为SubBytes、ShiftRows、MixColumns和AddRoundKey4个步骤。它使用的是SPN结构。

1.SubBytes

Rijndael的输入分组为128比特,也就是16个字节。首先,需要逐个字节对16字节的输入数据进行SubBytes处理。所谓SubBytes处理,就是以每个字节的值(0-255的任意值)为索引,从一张拥有256个值的替换表中查找出对应值的处理。也就是说,将一个字节的值替换成另外一个字节的值。

2.ShiftRows

以4个字节为单位的行(row)按照一定的规则向左平移,且每一行平移的字节数是不同的。

Rijndael加密算法

3.MixColumns

对一个4字节的值进行矩阵运算,将其变为另外一个4字节值。

4.AddRoundKey

对MixColumns的输出与轮密钥进行XOR,即进行AddRoundKey处理,在Rijndael中需要重复10到14轮计算。

Rijndael算法的解密流程

由于Rijndael为对称加密算法,所有它的解密过程与加密的逆过程一致,为:AddRoundKey - InvMixColumns - InvShiftRows - InvSubBytes.

Rijndael加密算法

从加密算法的安全角度来说,Rijndael(AES)并不是最安全的算法,但是它在整体的安全、性能、效率等方面表现的十分不错,所以它才能成为全世界使用最为广泛的对称加密算法。