热门问题
时间线
聊天
视角

Rijndael密鑰生成方案

来自维基百科,自由的百科全书

Remove ads

AES(Rijndael)使用一個密鑰生成方案把一個短密鑰擴展成各輪用於加密的子密鑰。該方案的名稱就叫做Rijndael密鑰生成方案(Rijndael key schedule)。對於不同位數的原始密鑰(128, 192, 256),加密的輪次是不相同的,但每一輪都需要與128位的密鑰進行異或,而根據原始密鑰生成各輪子密鑰的過程就是由Rijndael密鑰生成方案完成的。

公共操作(Common operations)

在描述密鑰生成的流程之前,有必要先闡述Rijndael密鑰生成方案所使用的一些公共操作。

旋轉(Rotate)

對於下面32位的字(十六進制):

1D 2C 3A 4F

旋轉操作會把它循環左移8位(一個字節),即左邊的高8位會成為右邊的低8位,結果如下:

2C 3A 4F 1D

求2的冪次操作(Rcon)

Rcon在Rijndael的參考文檔里稱為求2的冪次。需要注意的是這個操作不是作用在常規的整數域中的,它是作用在Rijndael有限域中的。2的多項式形式為,計算的公式為:

或者等價於,

Remove ads

金鑰排程(The key schedule)

在 AES 中定義了幾個參數:

  • N 以 32 位元字組(Word)為單位的金鑰長度,例如:AES-128 為四個字組、AES-192 為六個字組、AES-256 為八個字組。
  • R 是需要的回合金鑰數量,例如:AES-128 需要 11 把回合金鑰、AES-192 需要 13 把回合金鑰、AES-256 需要 15 把回合金鑰。
  • W0, W1, ... W4R-1 是總共需要擴展的字組數目。

RotWord 被定義為一個左循環移位(1 次移動1 byte)的操作:

SubWord 被定義為一個利用 AES 的S-box讓字組做非線性轉換的操作:

最後依照 i 值()做下列運算:

Remove ads
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads