安全雜湊演算法是如何工作的?


安全雜湊演算法 (SHA) 由國家安全域性 (NSA) 發明,並於 1993 年透過國家標準與技術研究院 (NIST) 作為美國聯邦資訊處理標準 (FIPS PUB 180) 釋出。

SHA 依賴於 MD4 演算法並共享與其類似的構建塊。SHA 的設計引入了一個新流程,該流程將壓縮函式的 16 字訊息塊輸入開發到 80 字塊,除此之外還有其他內容。

SHA 的處理過程如下:

步驟 1追加填充位 − 對原始訊息進行填充,使其長度與 448 模 512 同餘。即使訊息已達到所需長度,也會持續插入填充。填充包括單個 1 後跟必要數量的 0 位。

步驟 2追加長度 − 將一個 64 位塊(視為無符號 64 位整數,最重要的位元組在前)新增到訊息中,該塊定義原始訊息的長度(步驟 1 中填充之前)。完整訊息的長度是 512 的倍數。

步驟 3初始化緩衝區 − 緩衝區包含五個 (5) 個 32 位暫存器,分別表示為 A、B、C、D 和 E。此 160 位緩衝區可用於影響壓縮函式的臨時和最終結果。這五個暫存器初始化為以下 32 位整數(以十六進位制表示)。

A = 67 45 23 01

B = ef cd ab 89

C = 98 ba dc fe

D = 10 32 54 76

E = c3 d2 e1 f0

暫存器 A、B、C 和 D 實際上與 MD5 演算法中使用的四個暫存器相同。但在 SHA-1 中,這些值以大端格式儲存,這意味著字的最重要位元組位於低地址位元組位置。因此,初始化值(以十六進位制表示)如下:

字 A = 67 45 23 01

字 B = ef cd ab 89

字 C = 98 ba dc fe

字 D = 10 32 54 76

字 E = c3 d2 e1 f0

步驟 4以 512 位塊處理訊息 − 壓縮函式分為 20 個連續步驟,包括四個處理輪次,每一輪都由 20 個步驟組成。

這四個輪次在結構上彼此相同,唯一的區別在於每個輪次都需要一個不同的布林函式(可以定義為 f1、f2、f3、f4)和四個多加常數 Kt(0 ≤t ≤79)中的一個,這取決於所考慮的步驟。

步驟 5輸出 − 處理完最終的 512 位訊息塊 t(假設訊息被分成 t 個 512 位塊)後,可以得到一個 160 位的訊息摘要。

更新於:2022年3月14日

12K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告