使用方法
- 輸入文字或十六進位位元組,或開啟檔案計算其內容的雜湊。
- 選擇輸出格式:十六進位適合 sha512sum 風格的校驗值,Base64 適合完整性字串。
- 把預期值貼上到「對比」框進行校驗,十六進位和 Base64 均可。
- 需要 SHA-384?在「演算法」中選擇它,或從「全部演算法」表格中直接複製。
什麼是 SHA-512?
SHA-512 是 SHA-2 家族中輸出最長的函式,規範見 FIPS 180-4 和 RFC 6234。SHA-256 使用 32 位字,而 SHA-512 使用 64 位字、1024 位分塊和 80 輪運算,輸出 512 位摘要,即 128 個十六進位字元或 88 個 Base64 字元。它的抗碰撞強度約為 256 位,遠超任何可預見的攻擊能力。和所有雜湊一樣,它是單向的,無法從摘要還原輸入。
由於採用 64 位運算,在沒有 SHA-256 專用指令的 64 位處理器上,SHA-512 每位元組的處理速度往往比 SHA-256 更快;而在具備這類指令的 CPU 上,通常還是 SHA-256 更快。
SHA-384、SHA-512/256 等截斷版本
有幾種標準雜湊其實就是用不同的初始值執行 SHA-512,再擷取較短的輸出:
| 名稱 | 輸出 | 十六進位長度 | 典型用途 |
|---|---|---|---|
| SHA-384 | 384 位 | 96 | TLS 1.3 密碼套件、子資源完整性 |
| SHA-512/256 | 256 位 | 64 | 以 SHA-512 的速度得到與 SHA-256 等長的輸出 |
| SHA-512/224 | 224 位 | 56 | 較少使用 |
由於初始值不同,SHA-512/256 並不是 SHA-512 結果的前 64 個十六進位字元。截斷版本還能抵禦影響完整 SHA-256 和 SHA-512 的長度擴充套件攻擊。本頁可以計算 SHA-384 和 SHA-512;SHA-512/256 需要藉助其他工具,例如 openssl dgst -sha512-256。
Base64 完整性字串與密碼雜湊
SHA-512 的十六進位形式很長,因此面向機器的格式常用 Base64。子資源完整性(SRI)接受 sha256-、sha384- 和 sha512- 加 Base64 摘要的寫法,npm 的 package-lock.json 也為每個軟體包記錄一個 integrity 值,通常以 sha512- 開頭。開啟檔案,選擇 Base64 輸出,再加上字首即可。
Linux 中以 $6$ 開頭的密碼雜湊是 sha512crypt:對加鹽的 SHA-512 重複計算數千次,所以它永遠不會等於密碼的普通 SHA-512。無論摘要多長,對密碼只做一次 SHA-512 都很容易被暴力破解;儲存密碼請使用 Argon2id、scrypt、bcrypt 或 PBKDF2-HMAC-SHA512。
在命令列和程式碼中計算 SHA-512
sha512sum file.tar.gz # Linux
shasum -a 512 file.tar.gz # macOS
certutil -hashfile file.tar.gz SHA512 # Windows
Get-FileHash file.tar.gz -Algorithm SHA512 # PowerShell
# 生成用於 integrity 屬性的 Base64 摘要
openssl dgst -sha512 -binary file.js | openssl base64 -A
# Python
hashlib.sha512(data).hexdigest()
// Node.js
crypto.createHash('sha512').update(data).digest('base64')
本頁的 SHA-512 由瀏覽器內建的 Web Crypto API 計算,「全部演算法」表格還會列出同一輸入的 SHA-384、SHA-256、SHA-1、MD5 和 CRC 值。
編碼範例
| 輸入 (UTF-8) | SHA-512 |
|---|---|
Hello, World! | 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387 |
Base64.is | 44960f483bc929874301e2fb54f4337c84641ad12cb6b2639875e26e490664e65da046cf43eafb2ab4a47b5d3eb66637630af5cba841974bfaa4e372dd0453d2 |
你好 | 5232181bc0d9888f5c9746e410b4740eb461706ba5dacfbc93587cecfc8d068bac7737e92870d6745b11a25e9cd78b55f4ffc706f73cfcae5345f1b53fb8f6b5 |
常見問題
SHA-512 比 SHA-256 更安全嗎?
它的安全餘量更大,抗碰撞強度約為 256 位,而 SHA-256 約為 128 位。不過兩者都未被攻破,也都遠超暴力破解的能力範圍。當格式有要求、在你的硬體上更快或需要更長的摘要時選擇 SHA-512,否則 SHA-256 已經足夠。
SHA-512 可以解密嗎?
不能。無論輸入是一個單詞還是整個磁碟映象,SHA-512 摘要都固定為 64 位元組,因此無數不同的輸入會對應同一個摘要,根本無從解碼。只能拿猜測值的雜湊與它比對;查詢網站正是用這種方法找出常用詞和常見密碼,但對不可預測的資料無能為力。
SHA-512 值有多長?
== 結尾。SHA3-512、BLAKE2b 和 Whirlpool 的長度也一樣,把來歷不明的摘要貼上到雜湊識別工具中,即可看到哪些演算法符合。SHA-512 和 SHA3-512 一樣嗎?
不一樣。SHA3-512(FIPS 202)基於 Keccak,是完全不同的設計,同一輸入會得到不同的摘要。本頁不計算 SHA-3。
為什麼看起來相同的兩段文字,雜湊卻不同?
雜湊針對的是位元組。像 é 這樣的字元既可以存成一個碼位,也可以存成 e 加組合重音符;末尾空格、換行符(LF 或 CRLF)和字元集(UTF-8、UTF-16、Windows-1252)也都會改變位元組。請選擇對方系統使用的「文字編碼」,或直接以十六進位貼上準確的位元組。