首页 > 搜索 > 密码算法到了哪一步,Rijndael密码算法

密码算法到了哪一步,Rijndael密码算法

互联网 2020-10-22 16:44:19
在线算命,八字测算命理

一 什么是Rijndael

Rijndael是由比利时密码学家设计的分组密码算法,于2000年被选为新一代的标准密码算法——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)按照一定的规则向左平移,且每一行平移的字节数是不同的。下图是对其中一行进行处理的情形。

3 MixColumns

对一个4字节的值进行矩阵运算,将其变为另外一个4字节值,下图是对其中一列进行处理的情形:

4 AddRoundKey

对MixColumns的输出与轮密钥进行XOR,即进行AddRoundKey处理,下图展示了对1个字节进行处理的情形。

到此1轮迭代就结束了。实际上,在Rijndael中需要重复10到14轮计算。

Rijndael的加密过程,每一轮进行的处理为:

SubBytes->ShiftRows->MixColumns->AddRoundKey

Rijndael的解密过程,顺序相关:

AddRoundKey-> InvMixColumns-> InvShiftRows ->InvSubBytes

其中AddRoundKey是与轮密钥进行XOR运算,这一步在加密和解密时完全相同的。

其他三个步骤见下面三张图:

InvMixColumns:

InvShiftRows :

InvSubBytes:

三 Rijndael的破译

对Rijndael来说,每一步都是用数学公式来表达的,这是以前任何密码算法都不具备的性质。如果Rijndael的公式能够通过数学运算来求解,那就意味Rijndael能够通过数学方法进行破译,而这也就为新的攻击方式的产生提供了可能。

不过这还是一种假设,实际上,到现在还没出现针对Rijndael的有效攻击。

四 应该使用哪种对称密码算法

针对DES、3DES和AES对称密钥,到底选哪一种?

首先DES、3DES已经不安全了,不会再应用到任何新的用途。

现在大家应该使用AES(Rijndael),因为它快速、安全,并且能够在各种平台上工作。此外,全世界密码学家都在对AES进行不断的验证,因此即便万一发现它有什么缺陷,也会立刻告知全世界并修改这些缺陷。

AES最终候选算法应该可以作为AES的备份。和Rijndael一样,这些密码算法也都经过了严格的测试,且没发现任何的弱点。但NIST最终还是只选择了Rijndael作为标准,并没有官方认可作为最终的备份来使用。

一般来说,我们不应该使用任何自制的密码算法,而应该使用AES。因为AES在其选定过程中,经过了全世界密码学家所进行的高品质的验证工作,而对于自制的密码算法很难进行这样的验证。

免责声明:非本网注明原创的信息,皆为程序自动获取互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件12小时内删除。

相关阅读

一周热门

查看更多