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这四个步骤。

下面我们分别来讲一下各个步骤的作用。

SubBytes

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

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

为了便于理解,大家可以将其看成是简单的替换。

源4*4字节
替换
目标4*4字节

ShiftRows

SubBytes 之后,我们就可以进行shiftRows的操作了。

由于我们的源字节是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的博客

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

flydean程序那些事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值