Hash

如何填充 SHA-2 的輸入消息?

  • March 17, 2014

我讀到了輸入消息是如何準備被 MD4、MD5 或 SHA-1 散列的:

Step1 附加填充位

輸入消息被“填充”(擴展),使其長度(以位為單位)等於 448 mod 512。始終執行填充,即使消息的長度已經是 448 mod 512。填充執行如下:將“1”位附加到消息中,然後附加“0”位,以使填充消息的位長度與 448 mod 512 一致。至少附加一位,最多附加 512 位。

第2步。追加長度

將消息長度的 64 位表示附加到 step1 的結果中。如果消息的長度大於 2^64,則只使用低 64 位。生成的消息(用位和 b 填充後)的長度是 512 位的精確倍數。輸入消息的長度是 16(32 位)字的精確倍數。

… 算法步驟

我讀到軟管 2 步驟對於 MD4、MD4 和 SHA-1 的輸入消息總是相同的。SHA-224 / SHA-256 / SHA-384 / SHA-512 怎麼樣?他們如何“準備”輸入來計算雜湊?也許是一樣的方式?

SHA-1SHA-224並將SHA-256位“1”附加到消息的末尾,然後是k零位,其中k是方程的最小非負解l+1+k ≡ 448 mod 512,其中l- 消息長度。在第二步中,他們使用 32 位字。

SHA-384, SHA-512,SHA-512/224SHA-512/256使用不同的等式:l+1+k ≡ 896 mod 1024並且在 2. 步驟中使用 64 位字。

如果您想了解更多資訊,您應該閱讀Fips-180-4

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