一、密碼相容性評估重點:
1.雜湊演算法與升級機制:
現行黃金標準:建議採用 Argon2id、bcrypt 或 PBKDF2-HMAC-SHA256,並且不要使用 MD5 或純 SHA-256(因為未加鹽且運算太快)
相容性關鍵(漸進式遷移):當系統從舊雜湊升級到新雜湊時,不要強制所有用戶重設密碼,應採用 Lazy Migration(動態升級),其機制為當使用者成功登入時,在背景自動將其舊密碼雜湊升級為新演算法
2.字元編碼與特殊符號支援:
資料庫編碼:確保資料庫與欄位使用 utf8mb4(MySQL)或對應的 Unicode 編碼,達成完整支援特殊符號、多國語言及 Emoji
長度限制:避免設定過短的密碼長度上限(如16或20字元),並且根據 NIST 規範,應支援至少64-128字元,並允許所有 ASCII 與 Unicode 字元
3.Unicode 正規化:
不同作業系統(如 macOS 使用 NFD,Windows/Linux 使用 NFC)對相同視覺字元的內部位元組表示可能不同
相容作法:在密碼儲存與驗證前,統一進行 NFC 正規化,避免使用者在手機與電腦輸入相同密碼時卻因編碼差異而登入失敗
4.加鹽與安全配置 (Salt & Parameters):
每個密碼必須具備獨立、隨機產生的 Salt,與雜湊值一併儲存
二、簡單實作(附圖,利用python):