1. 程式人生 > >密碼學摘要演算法之SHA2

密碼學摘要演算法之SHA2

密碼學摘要演算法之SHA2

簡述

前面的篇章中我們已經說明過,SHA實際包括有一系列演算法,分別是SHA-1、SHA-224、SHA-256、SHA-384以及SHA-512。而我們所說的SHA2實際是對後面4中的統稱。各種SHA演算法的資料比較如下表,其中的長度單位均為:資料表

原理

  1. 訊息的填充與解析

    訊息填充的目的是為了在訊息填充後,在SHA-224和SHA-256中訊息的長度正好是512位的整數倍,SHA-384和SHA-512中訊息的長度是1024位的整數倍
    

接下來我們說明訊息或者資料檔案將如何實現填充。總的來說就是,先新增一個“1”,再後跟多個“0”,然後再追加一個64(SHA-384和SHA-512是128)位的訊息長度資訊,使得填充完成後的訊息長度正好是512(SHA-384和SHA-512是1024)位的整數倍。追加的訊息長度資訊是原始訊息的位長,填充完成的訊息會被分成512(SHA-384和SHA-512是1024)位的訊息分組

對於SHA-224和SHA-256來說訊息的最大長度L<2^64,在對訊息進行雜湊運算之前需要對訊息做相應的填充處理

  • 在原始資訊之後填充一個“1”,例如:如果原始資訊是"01010000",完成這一填充之後就是 “010100001”。
  • 在完成上一步填充後,在其後面需天充一定數量的“0”,數量記為K,則K的取值必須是滿足下述表示式的最小非負整數值
    ( L + 1 + K ) mod 512 = 448(SHA256) 或者( L + 1 + K ) mod 1024 = 896(SHA512)
  • 在填充完必的訊息後,追加原始訊息長度,因為訊息的長度不會超過2^64位,所以其長度資料的值不會超過64位.填充完畢後,所有的訊息分組都將是一個512位
  1. 迭代函式與常數

    SHA演算法這類雜湊演算法的計算過程都需要用到邏輯函式和計算常量。但由於具體演算法的不同所使用的具體的函式和常數略有差別。我們在前面的篇章中說過MD5和SHA1,它們都有4個邏輯函式,而在SHA2的一系列演算法中都採用了6個邏輯函式
    

SHA-224和SHA-256採用6個邏輯函式,每個函式均基於32位字運算,這些輸入的32位字,我們記為x、y、z,同樣的這些函式的計算結果也是一個32位字.而SHA-384和SHA-512每個函式操作64位的輸入字(x、y、z),輸出也是一個新的 64 位字

  1. 計算過程(這部分有點複雜,暫時沒研究透)