在哪裡可以找到 SHA-0 雜湊算法的描述?
在哪裡可以找到 SHA-0 雜湊算法的描述和/或虛擬碼?我正在尋找以下內容:HMAC RIPEMD。
我一直在實施其中的一些(HMAC、HOTP、TOTP和MD4、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]);