Search

Search IconIcon to open search

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
# 总体流程
# input -> state
  • 初始变换: 与第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 异或