什麼是雜湊?雜湊函式的完整說明
快速解答
雜湊使單向函數將任何輸入轉換為固定大小的輸出(雜湊)。相同的輸入總是產生相同的雜湊值;不同的輸入產生不同的雜湊值(抗碰撞性)。雜湊用於資料完整性、密碼儲存和數位簽章。使用我們的免費雜湊產生器在瀏覽器中計算 SHA-256、SHA-1 和 MD5 雜湊值。
介紹
雜湊是將任意大小的輸入資料轉換為固定大小的輸出(稱為雜湊或摘要)的過程。哈希函數是執行此轉換的演算法。加密雜湊函數具有特殊的屬性,使其可用於資料完整性、密碼儲存、數位簽章和內容定址。與加密不同,雜湊是單向的——您無法從雜湊中恢復輸入。常見的雜湊函數包括 SHA-256(用於比特幣和 TLS)、SHA-3 以及較舊的 MD5 和 SHA-1(現已因安全用途而被破壞)。
步步
-
了解哈希函數屬性
加密雜湊函數有四個關鍵屬性: (1) 確定性-相同的輸入總是給出相同的輸出。 (2)計算速度快。 (3) 單向-無法從雜湊中恢復輸入。 (4) 抗碰撞-無法找到具有相同雜湊值的兩個不同輸入。 (5) 雪崩效應-微小的輸入變化會大幅改變輸出。
-
學習常用演算法
SHA-256(256 位元輸出,64 個十六進位字元)是現代標準 - 用於比特幣、TLS 和數位簽章。 SHA-512 較安全,但速度較慢。 SHA-3 是最新的家族。 MD5(128 位元)和 SHA-1(160 位元)因防碰撞而被破壞,不應用於安全性。
-
區分散列和加密
雜湊是單向的——你無法逆轉它。加密是雙向的—您可以使用金鑰解密。雜湊是為了完整性和驗證;加密是為了保密。切勿使用哈希來儲存需要復原的資料。
-
正確使用哈希
為了保證資料完整性,對資料進行雜湊處理並與已知良好的雜湊值進行比較。對於密碼,請使用帶有獨特鹽的慢速密鑰拉伸雜湊(bcrypt、scrypt、Argon2),而不是原始的 SHA-256,它太快且容易受到暴力破解。
範例
SHA-256 哈希
輸入: Hello, World!
輸出: dffd6021bb2bd5b0af676290809ec008dfca50a8d29e6ac0a52c2d7e9f0a3b0c
雪崩效應
輸入: 你好世界! (與你好,世界?)
輸出: 儘管改變了一個字符,但哈希值卻完全不同
MD5 哈希(已損壞,僅舊版)
輸入: Hello, World!
輸出: ed0760733d7505e9ceacf8af225020ac
常見問題
- 使用 MD5 或 SHA-1 來確保安全性-兩者都因抗碰撞而被破壞。出於任何安全目的,請使用 SHA-256 或更強大的值。
- 不使用鹽對密碼進行雜湊處理-相同的密碼會產生相同的雜湊值,從而實現彩虹表攻擊。使用 bcrypt、scrypt 或 Argon2 以及獨特的鹽。
- 混淆雜湊與加密-雜湊是單向的(無法逆轉);加密是雙向的(可以用金鑰解密)。
- 期望雜湊值是唯一的——碰撞在理論上是可能的,但對於安全演算法來說實際上是不可行的(SHA-256 有 2^256 種可能的輸出)。
提示
- 使用 SHA-256 進行資料完整性驗證、內容尋址和數位簽章。
- 對於密碼存儲,請使用 bcrypt、scrypt 或 Argon2 — 而不是原始 SHA-256。這些演算法具有密鑰拉伸以抵抗暴力破解。
- 雜湊是單向的——切勿使用它來儲存需要恢復的資料。對機密資料使用加密。
- 使用我們的哈希產生器在瀏覽器中立即計算 SHA-256 和其他雜湊。