首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

用新的高級加密標準(AES)保護資料安全(四):金鑰擴展演算法詳解——RotWord、SubWord、Rcon 輪常數與完整迴圈邏輯

     編輯:關於C語言

金鑰擴展核心目的

從單一種子金鑰生成多組輪金鑰(w[]),大幅增加位元擴散度,提升抗密碼分析能力。

三大子元件

RotWord:單字左循環移位

輸入 4 位元組陣列,左移 1 位:[a,b,c,d] → [b,c,d,a]。類似 ShiftRows 但僅操作單行金鑰調度。

SubWord:S-box 位元組替換

對 4 位元組各自查 Sbox[x,y] 替換。例:0x27 → x=2,y=7 → Sbox[2,7]=0xCC。邏輯與加密 SubBytes 相同。

Rcon 輪常數表

每列 4 位元組,左欄為 GF(2^8) 中 2 的冪次:

Rcon[1] = 01 00 00 00
Rcon[2] = 02 00 00 00
Rcon[3] = 04 00 00 00
...
Rcon[i] = Rcon[i-1] * 0x02 (GF(2^8) 乘法)
特殊:0x80 * 0x02 = 0x1B (左移溢位後 XOR 0x1B)

需 Nr+1 列(如 128-bit 金鑰 Nr=10,需 11 列)。

KeyExpansion 主迴圈詳細邏輯

for row = Nk to 4*(Nr+1)-1
    temp = w[row-1]
    if row % Nk == 0
        temp = SubWord(RotWord(temp)) XOR Rcon[row/Nk]
    else if Nk == 8 and row % Nk == 4
        temp = SubWord(temp)          // 僅 256-bit 金鑰額外處理
    w[row] = w[row-Nk] XOR temp
  • 基本規則:每列 = Nk 列前該列 XOR 經處理的前一列。
  • 條件 1:每 Nk 列施加 RotWord+SubWord+Rcon。
  • 條件 2:256-bit 金鑰(Nk=8)額外每 8 列第 4 列施加 SubWord。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved