(4)AES分组加密算法(原理详解)

说明:本内容参考B站UP主“可厉害的土豆”的视频讲解,强烈推荐一下该宝藏UP主
【AES加密算法】| AES加密过程详解| 对称加密| Rijndael-128| 密码学| 信息安全_哔哩哔哩_bilibili

 本次内容讲解只针对数据加密,数据解密则是逆运算(主要是我还没整理,你先自行理解一下)

1.AES加密算法的设计流程 

AES属于分组加密算法,算法规定需要将明文划分成组,每组的数据长度位128位。而密钥长度可以是128位、192位、256位。其主要区别就是加密轮数不一样,128位的是10轮,192位的是12轮,256位的是14轮。本文以128位密钥为讲解用例。

2.初始变换
        1)串行转矩阵

 这里是以字节位单位,所以,16个单元就对应128位(128bit的密钥矩阵是4*4,如果是192位的则应该是4*6;256位的就是4*8)。这个转换是针对明文和密钥两者的,两者都得转才能进行后面的运算。

        2)初始化运算

 将第一组明文矩阵与对应的密钥矩阵进行异或运算,运算规则如上图所示

3.9轮循环运算
        1)字节代换(SubBytes

初始化运算后的矩阵A,将A矩阵中的每一位对应的查找表中数据取出,替换A矩阵上的值。即用检索结果替换检索值。

                ① 检索表

检索表是AES算法定义的,专业称呼为S盒,解码的时候所用的叫逆S盒, 

                 ② 检索值替换

 原矩阵上的数据作为索引值(index),检索到的结果作为替换后的值,如上图所示。

       

        2)行移位(ShiftRows)

规则:第一行保持不动,第二行左移一位,第三行左移两位,第四行左移三位。注意看下图矩阵数值的位置变化。

         

        3)列混合(MixColumns)

将输入的4*4矩阵左乘一个给定的4*4矩阵,但这里的矩阵相乘不是普通意义上的先相乘再相加。原先的相加运算更换成异或运算,原先的相乘也有相应变化,注意看下文介绍。

 乘法规则介绍:
        case1:(0000 0001)

        case2:(0000 0010)

        * 说明一下,这里异或上00011011是运算规则(跟GF(2^8)域运算有关系,后续会补充进来)。
        case3:(0000 0011)

 其他的数可以拆分成上述的情况,而后进行计算。

       

         4)轮密钥加(AddRoundKey)

子密钥矩阵产生:由最初的轮密钥矩阵扩展得来,例如10轮加密,每轮就会产生1个子密钥。

 w[i]计算规则:
        ●i不是4的倍数:w[i] = w[i-4] ⊕ w[i-1] (按照公式直接带入计算即可,此类情况比较简单)

        ● i是4的倍数:w[i] = w[i-4] ⊕ T(w[i-1])(T函数:字循环+字节替换+轮常量异或)
                ⑴ step1:字循环,将输入字[b0,b1,b2,b3]变换成[b1,b2,b3,b0](列操作)

                 ⑵ step2:字节代换,查找表,对应数替换

                 ⑶ step3:轮常量异或:上一环节所得到的结果与同轮常量R[j]进行异或,j表示轮数。而这个轮常量是给定的

 4.1轮最终轮

此环节就是那个10轮加密的最后一轮,而它与前面9轮加密的不同之处在于,四个环节中少了列混合这一环节,其他的都一样。(1-字节替换;2-行移位;3-列混合;4-轮密钥加)

5.密文输出

经过前面的加密过程就完成了一组数据的完整的AES算法加密。

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

少卿不在大理寺

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

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

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

打赏作者

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

抵扣说明:

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

余额充值