Encryption

為什麼 AES 程式碼即使使用 3 行也能正常工作

  • November 24, 2022

首先,我是一名學生,所以即使你們中的大多數人認為這是一個無用的問題,也不要讓我沮喪,因為它是我學習的平台我使用的是 AES 程式碼,其中有 3 行和 4 列它的移位行。雖然我知道在 AES 中我們有 4 行和 4 列塊。那為什麼它起作用了,我無法理解。這是附加的程式碼:

def shift_rows(s):
   s[1][0], s[1][1], s[1][2], s[1][3] = s[1][1], s[1][2], s[1][3], s[1][0]
   s[2][0], s[2][1], s[2][2], s[2][3] = s[2][2], s[2][3], s[2][0], s[2][1]
   s[3][0], s[3][1], s[3][2], s[3][3] = s[3][3], s[3][0], s[3][1], s[3][2]

任何指導和資訊都會有所幫助。

那為什麼它起作用了,我無法理解。

因為 AES 中的 ShiftRows 操作保持頂行不變;你的程式碼做同樣的事情(通過忽略它)。

您可能會注意到,第一行(索引 0)從未被呼叫。這是有道理的,因為根據定義,第一行中包含的值沒有變化。通過維基百科關於 AES的文章中包含的視覺化可以更好地理解這一點:

在此處輸入圖像描述

您共享的程式碼僅更新與 AES 定義對應的值,但不會創建新數組。因此,只有受影響的行必須重新計算和覆蓋,結果只更新 3 行。

引用自:https://crypto.stackexchange.com/questions/102946