密码学--AES轮函数和密钥生成的步骤呈现

一、前言

        DES不靠谱,大佬们从世界征集加密算法,AES突出重围。期末考试第六项--AES加密算法。

二、轮密钥生成

1、密钥长度

        不同于DES的64位密钥,AES不仅扩展了密钥长度,并且还提供了三种密钥长度供人们选择,分别是128位、196位、256位。

        不同的密钥长度,决定了密钥生成过程中轮密钥生成数量。128位产生10轮密钥,196轮产生12轮,256轮产生14轮。

        但是无论密钥长度是多长,其加密原理都是一样的,因此 我们选择128位的密钥 来进行对AES的讲解。

2、密钥的一轮循环

        当我们创建了128位密码后,我们需要先对密码进行分组排列,1字节 - 8比特 为1组,我们可以将128位密码 Key 分为16组:s0,s1...s15。并将它如图排列,每列标号位w_i

9f7030eaa7a84ca8990d209aa0ebe179.png

        轮密钥的生成公式分两种,是通过该密钥的下标i来决定的。

①wi : i不是4的倍数 wi = w(i-4) + w(i-1)

如:i = 5时 w5 = w1 + w4

②wi : i是4的倍数 wi = w(i-4) + T[w(i-1)]

如:i = 4时 w4 = w0+T[w3]

T[ ]是一个函数

3、T函数运算

① 字循环

将原本为s0、s1、s2、s3的w序列,进行移位循环

 fcb5aae232794f3aa2ce8d0a37fec303.png

变为s1、s2、s3、s0

c0bdc29075734fdaac5a95aeb082ae2a.png

② 字节代换

将字循环后的w0通过S盒映射

如:s1 = 00101101 中有8比特位

前4位控制行 0010 = 2 (行)

后4位控制列 1101 = 13 (列)

找到S盒中的2行13列的值,替代s1

s2、s3、s0 也是一样的操作

③ 轮常量异或

用给定的常量与字节代换后的结果进行异或

三、AES加密过程

1、初始加密

当我们输入完明文M和密钥key之后,我们会对M和key进行摩尔加,这里叫做初始加密,或者入口处理变换。

2、轮加密函数

轮加密函数分为两种:

1、前1~9轮:字节代替变换、行移位变换、列混合变换、轮密钥加

2、第10轮:字节代替变换、行移位变换、轮密钥加

① 字节代替变换:

将128位明文M 分为16组:s0,s1...s15。并将它如图排列,每列标号位w_i

ef1d459985094102b16e409afff479e0.png

查找s盒,高四位确定行,低四位确定列进行替换。

② 行移位:

将第一行移位0位

将第二行移位1位

将第三行移位2位

将第四行移位3位

45a2784bc5194e77a164bb05c3c4305c.png

③列混合:

行移位后的行列式 与 一个给定的常量行列式 相乘(多项式模乘)

④轮密钥加:

将该轮密钥key_i与列混合后的值进行摩尔加

 

执行完第十轮后,得出密文C

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

震惊铁豪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值