密碼雜湊產生與驗證引擎
Password Hash Generator & Verifier 密碼雜湊產生與驗證工具
快速產生與驗證 bcrypt、Argon2id、PBKDF2 等密碼雜湊。支援 Salt 自動產生、 Cost 設定、效能基準測試與演算法對比。為開發者與資安學習者打造。
密碼輸入
演算法
bcrypt
推薦
Argon2id
最推薦
PBKDF2
可用
SHA-256
⚠️ 教育
Cost Factor / 迭代次數
10 (推薦)
4
6
8
10
12
14
🚀 更快
✅ 推薦
🔒 更安全
Salt
長度: 0 bytes
驗證
產生結果
Hash
--
演算法--
Salt--
Cost--
耗時--
Benchmark — 瀏覽器效能
bcrypt Cost 10--
Argon2id (64MB)--
PBKDF2 (600k)--
⚠️ 瀏覽器效能測試,實際伺服器端速度會更快(約 5-20x)
演算法比較
| 演算法 | 安全性 | 速度 | 建議 |
|---|---|---|---|
| SHA-256 | ⭐ | ⭐⭐⭐⭐⭐ | ❌ 不建議存密碼 |
| PBKDF2 | ⭐⭐⭐ | ⭐⭐⭐ | ⚠️ 可用(建議高迭代) |
| bcrypt | ⭐⭐⭐⭐ | ⭐⭐ | ✅ 推薦 |
| Argon2id | ⭐⭐⭐⭐⭐ | ⭐ | 🏆 最推薦 |
安全性評級為綜合考量抗暴力破解、抗 ASIC/GPU 與設計成熟度。
常見問題 (FAQ)
Password Hash 與一般 Hash 有什麼不同?
一般 Hash(如 MD5、SHA-256)是為資料完整性驗證設計的,計算速度極快。而 Password Hash(如 bcrypt、Argon2id)是專為密碼儲存設計的,具有以下特點:
• 刻意慢速:透過 Cost Factor 控制計算時間,增加暴力破解成本
• 自動加 Salt:每個密碼使用不同的 Salt,防止彩虹表攻擊
• 抗 GPU/ASIC:Argon2id 需要大量記憶體,使 GPU 難以平行加速
結論:永遠不要直接用 MD5 或 SHA-256 存密碼,請使用 bcrypt、Argon2id 或 PBKDF2。
• 刻意慢速:透過 Cost Factor 控制計算時間,增加暴力破解成本
• 自動加 Salt:每個密碼使用不同的 Salt,防止彩虹表攻擊
• 抗 GPU/ASIC:Argon2id 需要大量記憶體,使 GPU 難以平行加速
結論:永遠不要直接用 MD5 或 SHA-256 存密碼,請使用 bcrypt、Argon2id 或 PBKDF2。
為什麼需要 Salt?
Salt(鹽值)是一段隨機資料,在計算 Hash 前與密碼拼接。其作用包括:
• 防彩虹表:預先計算好的 Hash 對照表(彩虹表)無法使用,因為每個 Salt 都不同
• 防重複:即使兩個使用者設定相同密碼,產生的 Hash 也不同
• 增加破解成本:攻擊者需要對每個 Salt 分別進行暴力破解,無法批量處理
標準做法是每個密碼使用不同的隨機 Salt(至少 16 bytes),並將 Salt 與 Hash 一起儲存(bcrypt 的輸出已內含 Salt)。
• 防彩虹表:預先計算好的 Hash 對照表(彩虹表)無法使用,因為每個 Salt 都不同
• 防重複:即使兩個使用者設定相同密碼,產生的 Hash 也不同
• 增加破解成本:攻擊者需要對每個 Salt 分別進行暴力破解,無法批量處理
標準做法是每個密碼使用不同的隨機 Salt(至少 16 bytes),並將 Salt 與 Hash 一起儲存(bcrypt 的輸出已內含 Salt)。
bcrypt、Argon2id、PBKDF2 如何選擇?
• Argon2id(最推薦):2015 年密碼雜湊比賽冠軍,設計最先進,同時抗 GPU 與 ASIC。需要調校記憶體與迭代參數。
• bcrypt(推薦基數大):1999 年設計,成熟穩定,廣泛支援。內建 Salt 與 Cost 控制,是許多框架的預設選擇。
• PBKDF2(可用):FIPS 認證標準,以迭代次數控制強度。對 GPU/ASIC 抵抗較弱,需使用極高迭代次數(數十萬次)。
• SHA-256(僅教育用途):不建議用於密碼儲存,無 Salt、速度太快,極易被 GPU 暴力破解。
建議:新專案使用 Argon2id,既有專案維持 bcrypt,兩者均遠優於 PBKDF2。
• bcrypt(推薦基數大):1999 年設計,成熟穩定,廣泛支援。內建 Salt 與 Cost 控制,是許多框架的預設選擇。
• PBKDF2(可用):FIPS 認證標準,以迭代次數控制強度。對 GPU/ASIC 抵抗較弱,需使用極高迭代次數(數十萬次)。
• SHA-256(僅教育用途):不建議用於密碼儲存,無 Salt、速度太快,極易被 GPU 暴力破解。
建議:新專案使用 Argon2id,既有專案維持 bcrypt,兩者均遠優於 PBKDF2。
什麼是 Cost Factor?
Cost Factor(成本係數)控制密碼雜湊的計算難度。以 bcrypt 為例,Cost 為 10 表示進行 2¹⁰ = 1024 次迭代。Cost 每增加 1,計算時間約加倍。
• Cost 8 — 較快,低階硬體也可承受(約 50ms)
• Cost 10 — 一般推薦值,安全與效能平衡(約 200ms)
• Cost 12 — 較安全,適合對安全性要求高的場景(約 800ms)
• Cost 14 — 非常安全,但使用者體驗可能受影響(約 3s)
建議根據伺服器效能調整 Cost,使每次驗證時間維持在 200-500ms。隨著硬體進步,應逐步提高 Cost 值。
• Cost 8 — 較快,低階硬體也可承受(約 50ms)
• Cost 10 — 一般推薦值,安全與效能平衡(約 200ms)
• Cost 12 — 較安全,適合對安全性要求高的場景(約 800ms)
• Cost 14 — 非常安全,但使用者體驗可能受影響(約 3s)
建議根據伺服器效能調整 Cost,使每次驗證時間維持在 200-500ms。隨著硬體進步,應逐步提高 Cost 值。
為什麼不要直接用 SHA-256 存密碼?
直接用 SHA-256(或 MD5)儲存密碼的主要問題:
• 速度太快:GPU 每秒可計算數十億次 SHA-256,暴力破解只是時間問題
• 無 Salt:相同密碼產生相同 Hash,彩虹表攻擊有效
• 抗 GPU 設計為零:無記憶體需求,GPU 可大規模平行計算
即使加上 Salt 並使用多次迭代(如 PBKDF2 的做法),SHA-256 的底層設計仍不如 bcrypt 或 Argon2id 適合作為密碼雜湊演算法。
最簡單的記憶法:Hash 是給檔案用的,Password Hash 才是給密碼用的。
• 速度太快:GPU 每秒可計算數十億次 SHA-256,暴力破解只是時間問題
• 無 Salt:相同密碼產生相同 Hash,彩虹表攻擊有效
• 抗 GPU 設計為零:無記憶體需求,GPU 可大規模平行計算
即使加上 Salt 並使用多次迭代(如 PBKDF2 的做法),SHA-256 的底層設計仍不如 bcrypt 或 Argon2id 適合作為密碼雜湊演算法。
最簡單的記憶法:Hash 是給檔案用的,Password Hash 才是給密碼用的。
雜湊後密碼還原得回來嗎?
不行。密碼雜湊是單向函數,設計上無法從 Hash 逆推回原始密碼。這也是為什麼密碼雜湊適合儲存密碼——即使資料庫外洩,攻擊者也無法直接取得明文密碼。
驗證密碼時,系統對使用者輸入的密碼重新計算 Hash,然後與資料庫中儲存的 Hash 比對是否相同。這就是本工具「驗證」功能的工作原理。
任何號稱可以「解密」或「還原」密碼雜湊的服務都是詐騙——它們只是使用彩虹表或常見密碼字典進行比對。
驗證密碼時,系統對使用者輸入的密碼重新計算 Hash,然後與資料庫中儲存的 Hash 比對是否相同。這就是本工具「驗證」功能的工作原理。
任何號稱可以「解密」或「還原」密碼雜湊的服務都是詐騙——它們只是使用彩虹表或常見密碼字典進行比對。
密碼雜湊完整指南
為什麼密碼不能存明文?
如果資料庫以明文儲存密碼,一旦發生資料外洩,所有使用者的密碼將直接暴露。由於多數使用者在不同網站重複使用密碼,攻擊者可以憑這些憑證登入使用者的 Email、銀行等其他帳號(Credential Stuffing)。
密碼雜湊技術解決了這個問題:即使資料庫外洩,攻擊者也無法從 Hash 逆推出原始密碼。只要你的密碼夠強且使用了正確的雜湊演算法,你的帳號安全性就能得到保障。
雜湊演算法歷史演進
第一代:簡單 Hash
MD5, SHA-1, SHA-256
❌ 無 Salt、速度太快
1930s~1990s 設計
第二代:專用密碼 Hash
bcrypt (1999), PBKDF2 (2000)
✅ 有 Salt、可調 Cost
但仍可被 ASIC 加速
第三代:記憶體硬綁定
scrypt (2009), Argon2 (2015)
✅ 需要大量記憶體
抗 GPU/ASIC 效果最佳
未來:量子安全
研究階段
🔬 抗量子電腦攻擊