Sha-3

SHA-3 填充說明

  • October 1, 2016

我正在 AVX2 程序集中實現 SHA-3 算法。我感到困惑的部分是 10*1 的填充。現在我的理解是數據消息M首先需要用'01’位序列填充。所以,N= M || ‘01’。

接下來,目前,請假設實現是針對 KECCAK

$$ 1024 $$這是海綿(KECCAK-p$$ 1600,24 $$,pad 101,576](n,d)。這意味著,所有數據包 P_{i} 的長度必須為 576 位(1600-1024)。 現在,我的困惑是傳入消息 M 本身的長度為 573 位。那麼,N=M || ‘01’ 變為 575 位長度。那麼,我只是填充一個位'1’嗎?這不是 101。請問如何處理這個特定長度的消息?

歡迎任何建議。保持感激。

101 padding 不是用“10”填充,而是用一個bit填充,然後根據需要填充0 bits,然後將rate的最後一位設置為1。 101 padding至少需要 2 位填充,例如 574 位的情況,速率為 576,在這種情況下,您只有一個 0,然後將其設置為 1,因為它是最後一位。

如果消息是 573 位,則您還需要 3 位,因此您添加一個位,兩個 0,然後將最後一位設置為 1,這會為您留下文字“101”填充。

您可能還想處理摘要大小的模糊性。您的特定參數化特別呼叫了 576 的速率,但 KECCAK1024 強烈暗示 1024 位摘要大小,但在這種情況下,它是您的容量。如果您正在使用容量,則需要將其括起來,例如 KECCAK

$$ 1024 $$

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