Hash

SHA-1/2/3 的常數從何而來?

  • June 19, 2019

我的要求是:

我需要知道以下算法的常量來源(移位常量、IV 或 S-Box):

  • SHA-1
  • SHA-2(所有尺寸)
  • SHA-3

例子:

  • BLOWFISH 使用 PI 的十六進制值。
  • SKEIN 使用從在 CTR 模式下執行 RJINDAEL 的輸出中選擇的常量,用於從 0 到 100 萬的全零隨機數和全零鍵和計數器。
  • CHACHA 使用語句“擴展 32 字節 k”和“擴展 16 字節 k”。

關於散列函式的 IV 和輪常數…

SHA1 和 SHA2 系列的問題已經得到解答設計人員選擇了旋轉常數以使散列函式安全(或者在 SHA1 的情況下,不夠安全)。SHA-224 和 SHA-384 等衍生散列函式使用不同的初始值,它們只是列表中的下一個素數(第 9 到第 16)。SHA-512/t 根據處理短字元串的 SHA-512 略微修改版本的輸出使用不同的初始值。

SHA3​​ 是一個完全不同的結構。它沒有初始值,工作狀態只是全0位。SHA3​​ 和 Keccak的輪常數基於線性回饋移位寄存器,與 SHA-2 中的硬編碼數字相比,這在程式碼中佔用的空間要少得多,並且在硬體中實現起來非常便宜。SHA3​​ 和 Keccak的旋轉偏移是一組重新排序的三角形數,以通道大小為模,SHA3 為 64 位。這在軟體和硬體方面也非常便宜,因為它只是對狀態內的位進行重新排序。

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