選擇語言

線上雜湊產生器與檔案總和檢查碼計算工具

支援文字與單檔的 MD5、SHA-1、SHA-256 及 SHA-512 等雜湊計算。提供十六進位與 Base64 輸出,並可貼上預期總和檢查碼自動比對,快速驗證下載檔案的完整性。

雜湊產生器使用說明 ↓
完全按照輸入的 UTF-8 格式計算雜湊值,包含空白與換行字元
與所有結果進行比對,忽略大小寫與多餘空白
Mehmet Demiray 發佈日期 更新日期
分享

雜湊產生器的功能介紹

雜湊產生器提供一個整合介面,讓使用者能同時計算多種演算法的雜湊值。使用者可以在文字或檔案模式之間切換,並透過演算法標籤選擇需要的計算方式,預設包含 MD5、SHA-1、SHA-256、SHA-384 與 SHA-512,也可選加入 CRC32。輸出格式支援 hex 與 Base64,並能自由切換大小寫。

當輸入文字時,系統會精確依照 UTF-8 編碼進行計算。若選擇檔案模式,介面會顯示讀取進度條。計算完成後,結果表格會列出每種演算法的對應數值。表格下方的註腳會顯示檔案名稱、檔案大小,或是文字輸入的 UTF-8 位元組長度,幫助使用者確認計算來源。

工具內建的預期總和檢查碼欄位允許使用者貼上已知的數值進行比對。系統會自動忽略 hex 格式的大小寫與周圍空白,甚至能直接解析從 sha256sum 指令複製的輸出,僅擷取第一個代幣進行比對。比對結果會在專屬欄位中明確顯示匹配或不匹配,讓驗證過程更加直觀。

使用總和檢查碼驗證下載檔案

下載作業系統映像檔、韌體更新或重要的安裝程式後,驗證檔案完整性是不可或缺的安全步驟。首先,從軟體發布者的官方網站複製公布的 SHA-256 或 SHA-512 總和檢查碼。接著,在雜湊產生器中選擇檔案模式並選取剛下載的檔案,將複製的檢查碼貼入預期總和檢查碼欄位。

系統會在瀏覽器內部完成計算,並在結果表格中顯示比對狀態。若顯示匹配,代表下載的檔案與發布者提供的檔案完全一致。雜湊函數具有雪崩效應,即使檔案中只有一個位元組被修改或損壞,計算出的雜湊值也會截然不同。

需要注意的是,若總和檢查碼與檔案存放在同一個伺服器上,這只能證明檔案在下載過程中沒有發生網路傳輸錯誤,無法保證伺服器本身未被入侵。若需更高的安全保證,應尋找經過數位簽章的檢查碼,以確認發布者的真實身分。

如何選擇合適的雜湊演算法

不同的應用場景需要不同強度的雜湊演算法。以下是常見演算法的輸出長度與安全狀態比較:

演算法 位元長度 hex 字元數 安全狀態與用途
MD5 128 32 可產生碰撞,僅適用於檢查意外損壞
SHA-1 160 40 已被 NIST 淘汰,不適用於安全驗證
SHA-256 256 64 當前標準,適用於多數安全與驗證需求
SHA-384 384 96 當前標準,提供更高安全餘裕
SHA-512 512 128 當前標準,在 64 位元系統上效能較佳
CRC32 32 8 錯誤檢查碼,非加密雜湊函數

MD5 與 SHA-1 在密碼學上已被證實存在碰撞風險,不應使用於數位簽章或憑證。然而,它們仍能有效偵測檔案在傳輸過程中的意外損壞。當檔案可能遭到惡意篡改時,必須使用 SHA-256 或更強的 SHA-2 系列演算法。CRC32 主要用於網路封包或壓縮檔的錯誤偵測,不具備防偽造能力。

雜湊與加密的差異

雜湊與加密是兩種完全不同的密碼學概念。加密是一個雙向過程,使用金鑰將明文轉換為密文,並能透過對應的金鑰將密文解密還原為明文。雜湊則是單向函數,它將任意長度的輸入資料轉換為固定長度的輸出字串,且無法從雜湊值反推回原始資料。

由於雜湊函數沒有金鑰,也不存在解密的操作。這使得雜湊非常適合用於驗證資料完整性或儲存密碼的指紋。然而,針對較短或常見的輸入文字,攻擊者可以透過預先計算的彩虹表來反查出原始內容。

在儲存使用者密碼時,直接使用 SHA-256 或 MD5 是不安全的。現代系統會採用 bcrypt 或 Argon2 等專門設計的慢速加鹽演算法。這些演算法會故意增加計算時間與記憶體消耗,從而大幅提高暴力破解與字典攻擊的成本,確保密碼資料庫即使外洩也能維持一定的安全性。

為什麼我的雜湊值不一樣

在計算文字的雜湊值時,結果與其他工具不一致通常是由於輸入資料的位元組層級差異所引起。雜湊函數對輸入資料極度敏感,任何微小的改變都會導致輸出完全不同。

最常見的原因是尾隨空白或換行符號的差異。Windows 系統使用 CR LF 作為換行符號,而 Unix 與 Linux 系統使用 LF。若複製文字時包含了不可見的換行符號,或者文字編輯器自動在檔案結尾添加了新行,計算出的雜湊值就會改變。文字編碼也會影響結果,相同的文字在 UTF-8 與 Big5 編碼下會產生完全不同的位元組序列。

雜湊產生器在處理文字時,嚴格按照使用者輸入的 UTF-8 位元組進行計算,不會自動修剪首尾空白或統一換行符號。在 hex 格式下,字母的大小寫不影響數值比對,但 Base64 格式對大小寫敏感。若需要處理特定換行符號或修剪選項的 MD5 計算,可以使用 文字轉 MD5 雜湊工具 來滿足更精細的需求。

私密且免費的檔案雜湊計算

處理機密檔案或未經發布的軟體建置檔時,資料隱私是首要考量。雜湊產生器利用瀏覽器內建的 Web Crypto API 進行計算,整個讀取與雜湊過程均在本地端完成,檔案絕對不會上傳至任何伺服器。這意味著即使在離線狀態下,只要頁面已載入,工具依然能正常運作。

由於 Web Crypto API 需要將整個檔案載入記憶體中進行處理,工具設定了 1 GB 的檔案大小上限。對於超過此限制的龐大檔案,或者在記憶體較小的行動裝置上,可能會因為瀏覽器限制而導致計算失敗。此工具完全免費且無需註冊帳號,也沒有每日使用次數的限制。

若開發者需要針對單一檔案計算帶有 HMAC 的 MD5 值,可以參考 檔案 MD5 雜湊產生器。當面對需要一次驗證大量檔案總和檢查碼的場景,例如核對整個資料夾的下載結果,批次檔案 MD5 雜湊產生器 提供了批次處理的解決方案,能大幅提升工作效率。

最常被問到的問題

如何驗證下載檔案的檢查碼?

使用雜湊產生器時,選擇檔案選項,將官方網站提供的檢查碼貼入預期檢查碼欄位,系統會自動比對並顯示相符或不相符。這能確認檔案在下載過程中保持完整,沒有發生意外損毀。請注意,檢查碼相符僅代表檔案與發布者提供的版本一致,若發布來源本身遭到入侵,則無法保證檔案絕對安全。

MD5、SHA-1 和 SHA-256 有什麼差別?

主要差異在於輸出長度與抗碰撞能力。MD5 輸出 128 位元,SHA-1 為 160 位元,SHA-256 則為 256 位元。MD5 和 SHA-1 已被證實存在碰撞漏洞,不適用於數位簽章或憑證等安全需求,但仍可用於檢查檔案是否意外損壞。若需防範惡意篡改,請務必使用 SHA-256 或更高強度的演算法。

為什麼計算出的文字雜湊值與其他網站不同?

文字雜湊值對位元組極度敏感。結尾的空白、Windows 與 Unix 的換行字元差異,或是不同的文字編碼,都會改變最終結果。本工具預設以 UTF-8 編碼精確計算您輸入的文字,不會自動去除首尾空白。若需調整換行字元或去除空白,可改用 文字轉 MD5 工具。

我的檔案會被上傳到伺服器嗎?有大小限制嗎?

檔案完全在您的瀏覽器本機端進行計算,絕不會上傳至任何伺服器,頁面載入後甚至可離線使用。由於瀏覽器需要將整個檔案讀入記憶體,目前檔案大小限制為 1 GB。若需處理大量檔案,可使用 批次檔案雜湊工具。

雜湊和加密是一樣的嗎?

兩者完全不同。加密是雙向的,可以透過金鑰解密還原資料。雜湊則是單向的數學函數,無法從雜湊值反推回原始資料。此外,常見文字的雜湊值容易被彩虹表反查,若需儲存密碼,應使用 bcrypt 或 Argon2 等專屬演算法,而非單純的 SHA-256 或 MD5。

輸出格式該選 hex 還是 Base64?大小寫有影響嗎?

hex 是最常見的檢查碼格式,Base64 字串較短,常用於 Subresource Integrity 或特定 API。在比對 hex 檢查碼時,大小寫不會影響結果,系統會自動忽略大小寫與周圍空白。若貼上的檢查碼包含檔名等額外資訊,系統也會自動擷取第一段雜湊值進行比對。

SHA-256 和 SHA-512 哪一個比較好?

兩者皆具備極高的密碼學安全性。SHA-512 的輸出長度為 512 位元,在 64 位元系統上運算速度通常較快。SHA-256 輸出 256 位元,是目前各大軟體發行商與網站最廣泛採用的標準。一般情況下,選擇 SHA-256 即可滿足多數驗證需求。

參考資料

  1. FIPS 180-4: Secure Hash Standard (SHS) · NIST
  2. RFC 1321: The MD5 Message-Digest Algorithm · IETF
  3. RFC 6234: US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF) · IETF
  4. RFC 6151: Updated Security Considerations for the MD5 Message-Digest and the HMAC-MD5 Algorithms · IETF
  5. NIST Transitioning the Use of Cryptographic Algorithms and Key Lengths (SP 800-131A Rev. 2) · NIST
  6. NIST Retires SHA-1 Cryptographic Algorithm · NIST
  7. SubtleCrypto: digest() method · MDN Web Docs