AES
Last updated
Jun 17, 2023
# AES
- Advanced Encryption Standard
- 1997 年美国商务部公开招标的算法, Rijndael 中标
- diffusion 也比较高
# AES 算法
- 可变块长度 32*$N_b$ bits, 可变密钥长度 32*$N_k$ bits, $N_k$ 和 $N_b$ 4, 6, 8
- 轮数推导出: $N_r$ = max($N_b$, $N_k$) + 6
# 总体流程
- 初始变换: 与第0轮密钥异或

# Bytesubstitution(SB)
# ShiftRows(SR)
# MixColumns(MC)
- 将输入的矩阵左乘一个给定的 4*4 矩阵
- 对每一项, 比如下二图的 02*b4, 乘完还要 ^ 给定的 多项式(GF(2$^8$)), 然后各项相加
- 那个加号代表异或! 不是相加!


# AddRoundKey(ARK)
- AddRoundKey() 异或!

# 计算下一轮密钥
- if i%n_k == 0:
- temp = Subword(Rotword(w[i-1])) xor RCON[1]
- i 当前列数
- else: temp=Subword
- 然后每一列 与 temp 异或



