AES对称加密算法

1.加密原理

它通过轮变换中的四个过程和在各轮变换中生成子密钥的方法来实现。

2.加密

.相关系数

设明文分组 (状态矩阵) 为 4 行 Nb 列,原始密钥为 4 行 Nk 列矩阵。 加密轮数 Nr = max {Nb + Nk} + 6 .

.流程

AES加密开始——读入原文——读入原始密钥——(1)产生轮子密钥——(2) AddRoundkey 变换——(3)轮变换: { ByteSub(); ShiftRow(); MixColumn(); AddRoundKey(); }——(4)最后轮变换:ByteSub(); ShiftRow (); AddRoundKey(); }——形成AES密文,加密结束
其中,步骤(3)重复进行 Nr - 1 轮

AES解密开始——读入密文——读入原始密钥——(1)产生轮子密钥——(2) AddRoundkey 变换——(3)轮变换: { 逆ByteSub(); 逆ShiftRow(); 逆MixColumn(); AddRoundKey(); }——(4)最后轮变换:逆ByteSub(); 逆ShiftRow (); AddRoundKey(); }——形成AES明文,解密结束
其中,步骤(3)重复进行 Nr - 1 轮

.轮变换过程
  1. ByteSub变换: 由加密S-盒映射实现(解密时有类似的解密S-盒);
  2. ShiftRow变换: 将状态矩阵的第 i 行循环左移 Ci 个
    字节,一般 (C0, C1, C2, C3) = (0,1,2,3);
  3. MixColum变换: 将状态矩阵列的每列视为在 F(2的8次方) 上且次数小于4的多项式,将每列表示的多项式乘以a(x):
    在这里插入图片描述

再将所得结果模 x的4次方+1,因为a(x)与 x的4次方+1 互素,从而保证了此变换是可逆的,由欧几里德扩展算法可求得其逆。

  1. AddRoundKey变换: 圈密钥是原始密钥通过密钥扩展得到的子密钥。圈密钥加法就是将状态矩阵与圈密钥矩阵进行模2加。
.轮变换生成子密钥

设明文矩阵为 Nb 列,原始密钥为 在这里插入图片描述

列数为Nk,则轮数 Nr = max(Nb, Nk) + 6 。分2种情况:

  1. 若 Nb ≤ 6,当 i 为 0 到 Nk - 1 时 ,定义第 i 个子密钥wi = ki ; 当 i 在 Nk 与 Nr-1 之间时,如果 i mod Nk ≠ 0 , 定义
    在这里插入图片描述

否则令
在这里插入图片描述为圈常数,Rcon [ i ]中每个分量视为有限域F(2的8次方)中的元素,定义在这里插入图片描述Rotate是左移一个字节操作,ByteSub 是以一个4字节字作为输入,并返回对该四个字节字的每一个字节都进行一次 ByteSub 变换所得到的结果

  1. 若 Nk > 6,只多了一种条件下的操作: 当 i 为4的倍数时,须将前一个字 在这里插入图片描述
    经过ByteSub 变换。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值