Hash
如何填充 SHA-2 的輸入消息?
我讀到了輸入消息是如何準備被 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-1
,SHA-224
並將SHA-256
位“1”附加到消息的末尾,然後是k
零位,其中k
是方程的最小非負解l+1+k ≡ 448 mod 512
,其中l
- 消息長度。在第二步中,他們使用 32 位字。
SHA-384
,SHA-512
,SHA-512/224
和SHA-512/256
使用不同的等式:l+1+k ≡ 896 mod 1024
並且在 2. 步驟中使用 64 位字。如果您想了解更多資訊,您應該閱讀Fips-180-4。