SHA(Secure Hash Algorithm,安全散列算法)是一系列密碼散列函式的家族,被設計用於產生固定長度的輸出值,即訊息摘要,從任意長度的輸入數據計算得出。這些算法包括SHA-1、SHA-2和SHA-3等,其中SHA-2系列算法的基本原理如下:
初始化:設定一個初始值(IV),作為計算的起點。
疊代運算:將輸入數據分成512比特(64位元組)一組,共進行64次疊代。每次疊代包括四個步驟:
數據置換:將輸入數據按照特定的置換方式重新排列。
置換後的數據與IV進行異或操作。
使用特定的邏輯運算對數據進行處理。
將處理結果輸出。
最終輸出:經過64次疊代後,將最後一次疊代的輸出值作為最終的摘要值。
SHA算法的特點包括:
不可逆性:無法從生成的摘要中復原原始輸入數據。
單向性:兩個不同的訊息不會產生同樣的訊息摘要。
避免碰撞:在給定時間內,找到兩個不同訊息產生相同摘要的難度極高。
SHA算法廣泛套用於數字簽名、身份驗證和數據完整性驗證等領域。SHA-256是SHA-2族中的一個變體,它產生一個256位的哈希值,通常由一個長度為64的十六進制字元串來表示。