Araç hakkında
PBKDF2-HMAC-SHA-256 nasıl çalışır?
PBKDF2, parolayı anahtar olarak kullanan HMAC-SHA-256 fonksiyonunu salt ile başlayarak art arda çalıştırır ve sonuçları XOR’lar. Maliyet yalnız iterasyon sayısıyla ayarlanır; bellek gerektirmediği için GPU üzerinde Argon2 ve scrypt’e göre çok daha ucuz paralelleştirilir.
Araç 600 000 iterasyon, 16 bayt rastgele salt ve 32 bayt çıktı kullanır. Bu değer OWASP’ın PBKDF2-HMAC-SHA-256 için önerdiği alt sınırın üzerindedir.
$pbkdf2-sha256$i=600000$<salt>$<hash>Ne zaman PBKDF2 seçilmeli?
- FIPS 140 doğrulaması gereken ortamlarda (PBKDF2 NIST SP 800-132’de tanımlıdır, Argon2 değildir).
- Platformun yalnız PBKDF2 sunduğu durumlarda (ör. Web Crypto API, birçok donanım güvenlik modülü).
- Bu kısıtlar yoksa yeni sistemlerde Argon2id tercih edin.
Aynı değeri Web Crypto ile üretmek
PBKDF2-SHA256 tarayıcıların ve Node.js’in Web Crypto API’sinde yerleşik olarak bulunur; ek kütüphane gerekmez. Django’nun varsayılan parola hasher’ı da PBKDF2-SHA256’dır ve iterasyon sayısını her sürümde artırır.
const key = await crypto.subtle.importKey('raw', new TextEncoder().encode(parola), 'PBKDF2', false, ['deriveBits']);
const bits = await crypto.subtle.deriveBits(
{ name: 'PBKDF2', hash: 'SHA-256', salt, iterations: 600000 },
key, 256,
);salt, encoded dizedeki Base64 değerin çözülmüş 16 baytıdır.