跳至主要內容
FreeOnlineTools Go
繁體中文
解釋

雜湊演算法詳解:MD5、SHA-1、SHA-256、SHA-512

作者:FreeOnlineTools Team · 更新日期:2026-08-28

快速解答

MD5 和 SHA-1 已損壞,不得用於安全敏感目的。 SHA-256 是完整性檢查、簽章和區塊鏈的當前預設值。 SHA-512 在 64 位元 CPU 上速度更快,並且在需要較長摘要的情況下使用。使用我們的哈希生成器在您的瀏覽器中計算其中的任何一個;使用文件哈希來驗證文件完整性。

介紹

加密雜湊函數接受任意大小的輸入,並產生固定大小的摘要,該摘要是確定性的、計算速度快、不可反轉、抗衝突且對雪崩敏感(一位變化會改變大約一半的輸出位元)。 MD5(128 位元)、SHA-1(160 位元)、SHA-256(256 位元)和 SHA-512(512 位元)是四種最常見的雜湊函數,但它們的安全屬性差異很大。

步步

  1. 了解哈希函數的屬性

    好的加密雜湊是確定性的(相同的輸入總是產生相同的輸出)、固定大小的輸出、計算速度快、無法反轉(抗原像)、無法找到具有相同輸出的兩個輸入(抗衝突)和雪崩(微小的輸入變化翻轉約 50% 的輸出位)。

  2. 了解摘要大小

    MD5 產生 128 位元(32 個十六進位字元)。 SHA-1 產生 160 位元(40 個十六進位字元)。 SHA-256 產生 256 位元(64 個十六進位字元)。 SHA-512 產生 512 位元(128 個十六進位字元)。較長的摘要會降低衝突機率,但會增加儲存大小。

  3. 了解為什麼 MD5 和 SHA-1 被破壞

    研究人員發現了針對 MD5(2004)和 SHA-1(2017,SHAttered 攻擊)的實際碰撞攻擊。衝突使攻擊者可以使用相同的雜湊值製作兩個不同的輸入,從而破壞數位簽章和憑證授權單位。出於安全考慮,兩者都不應該被使用。

  4. 選擇正確的演算法

    對於速度比安全性更重要的文件完整性檢查,MD5 或 SHA-1 仍然很常見。對於任何安全敏感用途(密碼、簽章、憑證、區塊鏈),請使用 SHA-256 或 SHA-512。對於密碼存儲,請使用 bcrypt、scrypt 或 Argon2 等慢速 KDF — 切勿使用原始 SHA-256。

  5. 計算並驗證哈希值

    Use the Hash Generator to hash text with any algorithm, or File Hash to compute the hash of a local file.將生成的摘要與已知良好的值進行比較以驗證完整性 - 一點差異就意味著文件已損壞或篡改。

範例

'hello' 的 MD5 (128 位,32 個十六進位字元)

輸入: hello

輸出: 5d41402abc4b2a76b9719d911017c592

'hello' 的 SHA-256 (256 位,64 個十六進位字元)

輸入: hello

輸出: 2cf24dba5fb0d30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824

雪崩效應-一個角色改變

輸入: 你好 vs 你好

輸出: SHA-256('hello') 開始 2cf24dba... 而 SHA-256('Hello') 開始 185f8db3... — 儘管一位輸入發生變化,但完全不同

常見問題

  • 使用 MD5 或 SHA-1 進行密碼雜湊:兩者都快速且容易損壞,使得暴力破解和彩虹表攻擊變得微不足道。 Use bcrypt, scrypt, or Argon2 instead.
  • 混淆雜湊與加密:雜湊是單向且不可逆的;加密是雙向的。您无法“解密”哈希值 - 您只能比较哈希值。
  • Ignoring length-extension attacks: MD5, SHA-1, SHA-256, and SHA-512 are all vulnerable to length-extension attacks when used as MACs.使用HMAC-SHA256進行訊息認證。
  • 使用 == 比較雜湊值,而不是恆定時間比較:定時洩漏讓攻擊者可以逐位元組恢復雜湊值。 Use a constant-time comparison in security code.

提示

  • 新系統預設為 SHA-256 — 它速度快、受到廣泛支持,並且截至 2026 年沒有實際的碰撞攻擊。
  • 對於密碼存儲,請使用工作因子為 12+ 的 bcrypt(或具有 64MB 內存的 Argon2id)——切勿使用原始 SHA-256,這對 GPU 來說太快了。
  • 驗證檔案下載時,請比較演算法名稱和摘要 - 如果發布者只想 SHA-256,則 SHA-1 雜湊毫無意義。
  • 使用我們的檔案雜湊工具在本地計算大檔案的 SHA-256 而無需上傳 - 它透過 Web 加密 API 串流傳輸檔案。

相關工具

相關指南

參考