Hash

在哪裡可以找到 SHA-0 雜湊算法的描述?

  • October 8, 2019

在哪裡可以找到 SHA-0 雜湊算法的描述和/或虛擬碼?我正在尋找以下內容:HMAC RIPEMD

我一直在實施其中的一些(HMAC、HOTP、TOTPMD4、MD5、RIPEMD-128,160

SHA(-0) 上的參考是1993 年 5 月 11 日的FIPS 180(存檔掃描)。標準本身在NIST 網站上被引用,但連結到另一個掃描缺少第 1 頁和之前的那個,因此前言、摘要、解釋…還有這個1992 年 1 月 22 日的文本草案這裡也有較少的來源說明)。


將其更改為 SHA-1 的提案於 1994 年 7 月 11 日發布,並在聯邦公報上線上發布,其中包含部分亂碼,包括安全關鍵更改:

在第 7 節

$$ 1 $$(第 9 頁),顯示

    (b) For t=16 to 79 let W t  = W t-3  XOR W t-8  XOR W t-14  XOR W t-16 的行。

替換為

    (b) 對於 t=16 到 79,令 W t  = S 1 (W t-3  XOR W t-8  XOR W t-14  XOR W t-16 )。

其中 S 1是第 3 節中定義的左循環移位一位$$ 1 $$(第 6 頁),即 S 1 (X) = (X << 1) v (X >> 31)。

注意:原始 PfC 保留的內容有混亂的子/上標(現代網路工件),並且錯過了 W t的修改表達式的右括號(可能是原始的遺漏)。

這是設計中的技術更改,對於提高安全性至關重要,而不是像隨便閱讀 PfC 所理解的那樣糾正印刷錯誤。這種變化是在沒有任何理由的情況下引入的,最初並沒有導致測試向量發生變化。因此,有理由懷疑它是故意悄悄偷偷溜走的,因為知道原版並不像預期的那樣安全,可以抵禦受過教育的碰撞攻擊。

修訂後的文件是1995 年 4 月 17 日的FIPS 180-1 ,在NIST 網站上引用(帶有指向實際文件的外部掃描的連結)。


將 SHA-1 的原始碼更改為 SHA(-0) 的原始碼很容易:只需刪除 512 位消息塊的 32 位字的一位旋轉。例如,在RFC 6234的參考實現中,更改

W[t] = SHA1_ROTL(1, W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]);

W[t] = ( W[t-3] ^ W[t-8] ^ W[t-14] ^ W[t-16]);

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