密碼雜湊產生與驗證引擎

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
--

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。
為什麼需要 Salt?
Salt(鹽值)是一段隨機資料,在計算 Hash 前與密碼拼接。其作用包括:

防彩虹表:預先計算好的 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。
什麼是 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 值。
為什麼不要直接用 SHA-256 存密碼?
直接用 SHA-256(或 MD5)儲存密碼的主要問題:

速度太快:GPU 每秒可計算數十億次 SHA-256,暴力破解只是時間問題
無 Salt:相同密碼產生相同 Hash,彩虹表攻擊有效
抗 GPU 設計為零:無記憶體需求,GPU 可大規模平行計算

即使加上 Salt 並使用多次迭代(如 PBKDF2 的做法),SHA-256 的底層設計仍不如 bcrypt 或 Argon2id 適合作為密碼雜湊演算法。

最簡單的記憶法:Hash 是給檔案用的,Password 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 效果最佳

未來:量子安全

研究階段
🔬 抗量子電腦攻擊