Parolni saqlashda har xil yondashuvlar bor. MD5/SHA-1 eskirgan, xavfsiz emas. Bugun yagona to'g'ri yo'l — modern hashing algoritmlari.
Nima uchun shunchaki hash yetmaydi?
MD5(password) — buzilgan. Rainbow tables — minglab umumiy parol hashlarini tezda topadi. Brute force GPU bilan — soatlar.
bcrypt — sinov o'tgan
1999'dan beri. Sekin (parol tekshirish 100ms+) — brute force qiyin. Cost parametri: 12 (default) yoki 14 (xavfsizroq, sekinroq).
PHP'da
$hash = password_hash($pass, PASSWORD_BCRYPT, ['cost' => 12]). Tekshirish: password_verify($pass, $hash).
Argon2 — 2015 yutuq
Password Hashing Competition g'olibi. bcrypt'dan xavfsizroq. GPU/ASIC hujumga qarshi. PASSWORD_ARGON2ID yoki ARGON2I.
Salt
Avtomatik. Har parol uchun unikal salt — bir xil parol — har xil hash. Rainbow tables ish bermaydi.
Pepper (server secret)
Application secret — DB'da emas, kod yoki .env'da. DB tanlansa ham parol ochilmaydi.
Rehashing
Vaqt o'tib cost oshiriladi. password_needs_rehash() bilan eski hashlarni yangilash.
2FA
Parol kuchli emas — har doim 2FA qo'shing. SMS, authenticator, hardware key.
Nima bo'lmasin?
MD5, SHA-1, SHA-256 (faqat) — eskirgan. Encryption (decrypt mumkin) — parol uchun emas. Plain text — albatta yo'q.