SHA-256 演算法

比特幣區塊鏈使用 SHA-256 進行挖礦,確保每個區塊的數據完整性和安全性。挖礦過程中,礦工需要不斷變化區塊的 隨機數 Nonce 進行計算工作,直到找到滿足當前難度要求的哈希值。

SHA-256 演算法

 

SHA-256 雜湊函數,是透過多輪非線性壓縮,把任意長度資訊映射成 256-bit 不可逆推的系統.

它是 SHA-2,Secure Hash Algorithm 2,系列中的一個成員,該系列還包括 SHA-224、SHA-384 和 SHA-512。

SHA,安全雜湊演算法 Secure Hash Algorithm,是密碼雜湊函數的家族,用於將輸入 input 的訊息轉換為固定長度字串的數值 output,這個數值稱為雜湊值 Hash,通常稱為訊息摘要 Message Digest 或摘要 Digest。

SHA 演算法,是由美國國家安全局 NSA 研發,由美國國家標準與技術研究院 NIST 於2001年發布的.美國聯邦資訊處理標準 FIPS 認證的安全雜湊演算法.

SHA 家族分為 SHA-0、SHA-1、SHA-2、SHA-3,比特幣採用的 SHA-256 演算法是 SHA-2 的演算法之一,能生出 256 位元的輸出值,是一種單向函數。


SHA-256 基本概念

  • 雜湊唯一性 兩個不同的輸入值,通過雜湊要輸出相同哈希值概率在計算量級上不可行,具備抗碰撞性 Collision Resistance。亦無法從給定的雜湊值逆推出原始輸入,具備抗預像性 Preimage Resistance。

  • 填補與分塊處理 先將輸入值進行填補,並加入原始訊息長度資訊,使其符合 512 位元倍數,再透過 Merkle-Damgård 結構,將這些分塊依序送入壓縮函數中進行迭代運算,前一個區塊的輸出會作為下一個區塊的輸入的一部分,直到處理完整個訊息

  • 固定長度輸出確定性 無論輸入數據的大小如何,SHA-256 始終生成 256 位元的輸出。

  • 雪崩效應 壓縮函數中的非線性擴散與多輪迭代結果,任何輸入值的變化,都會造成輸出值的大幅改變,用以防止輸出值的可預測性.


SHA-256 運作方式

  • 消息填充 SHA-256 首先會對輸入數據進行填充,使其滿足 512 位元倍數長度,以便後續分塊處理。

  • 初始哈希值設定 SHA-256 初始化時會設定一組 8 個 32-bit 的初始常數(H0–H7),這些初始值是由質數平方根的小數部分所構造的固定常數。

  • 消息分塊與處理 填充過的消息被分割成多個 512 位元的數據塊。每個數據塊將通過多輪壓縮函數 compression function 進行處理。

  • 壓縮函數 SHA-256 使用了一個基於位運算、邏輯運算、模加法以及置換的壓縮函數,包含 64 輪迭代運算。該壓縮函數將初始哈希值與處理過的數據塊結合,並產生新的哈希值。

  • 輸出哈希值 最終,所有數據塊處理完畢後,初始雜湊值被更新為最終的 256 位雜湊值,即輸出雜湊值。


SHA-256 應用

  • 數字簽名與驗證 SHA-256 被廣泛應用於數字簽名和驗證過程中,確保數據在傳輸過程中的完整性。

  • 比特幣工作量證明 比特幣區塊鏈使用 SHA-256 進行挖礦,確保每個區塊的數據完整性和安全性。挖礦過程中,礦工需要不斷變化區塊的 隨機數 Nonce 進行計算工作,直到找到滿足當前難度要求的哈希值。

  • 密碼學應用 在多種密碼學應用中,如生成密碼摘要、數據完整性驗證、消息認證碼 HMAC 等。


SHA256 相關 BIP

  • BIP141:Segregated Witness(SegWit)
  • BIP143:Transaction Signature Verification for SegWit v0
  • BIP340:Schnorr Signatures
  • BIP341:Taproot
  • BIP342:Tapscript
  • BIP37:Bloom Filtering for SPV Nodes
  • BIP152:Compact Block Relay
  • BIP158:Compact Block Filters
  • BIP34:Block Height in Coinbase
  • BIP66:Strict DER Signatures
2026/9/15 4:38 AM


更多文章