Padding

SHA-512 填充中的長度欄位是什麼?

  • April 6, 2019

如果我在消息上使用 SHA-512 並且需要確定填充欄位和長度欄位,我如何確定長度欄位?我想我了解填充,但不了解長度欄位。

例如,如果我有一個 1919 位的消息,則填充欄位將是一個 1 和零個 0。但是長度欄位是什麼?1919 年?

是的,您的填充和有關長度欄位的想法是正確的。現在您只需將消息的大小附加為 2 個 64 位大端整數(128 位)或一個 128 位大端整數。之後,您的增強消息應該可以被 1024 整除。

來源:英文維基百科的 SHA-256 偽代​​碼。(請注意有關 SHA-512 的附加資訊。)

在 $ \text{SHA-512} $ 塊的大小為 1024 位。最後一個塊必須包含:

  • 消息中的其餘數據(mod 1024)。
  • 一些填充物(填充)
  • 最後 128 位為length

SHA-512

如果消息是 1919 位長度:

  1. 計算最後一個塊中數據的大小: $ 1919 \mod 1024 = 895 $
  2. 將長度欄位的大小(128 位)添加到最後一個塊大小(895 位), $ 128 + 895 = 1023 $
  3. 看到我們必須在最後一個塊中添加 1 位作為填充以變成 1024 位

答案將是:

  • 填充欄位的大小 = 1 位
  • 填充欄位的數據 = 1
  • 長度欄位的數據 = 1919 作為無符號 128 位大端整數0x0000000000000000000000000000077F

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