İçeriğe geç

scrypt Hash Oluşturucu

Yüksek bellek karmaşıklığı ile donanımsal saldırıları engelleyen KDF.

RFC 7914

Parametreler: N = 2¹⁷, r = 8, p = 1, 16 bayt rastgele salt, 32 bayt çıktı.

Her çalıştırmada yeni bir salt kullanılır; aynı parola farklı hash üretir. Doğrulama için çıktının tamamını saklayın.

Araç hakkında

Parolalar neden SHA-256 ile değil, yavaş bir fonksiyonla saklanır?

SHA-256 gibi genel hash fonksiyonları hızlı olacak şekilde tasarlanmıştır; tek bir ekran kartı saniyede milyarlarca SHA-256 hesaplayabilir. Veritabanı sızdığında saldırgan her aday parolayı bu hızla deneyebilir. Parola hashleme fonksiyonları ise ayarlanabilir bir maliyetle bilinçli olarak yavaştır ve her parolaya ayrı rastgele salt ekler; böylece aynı parolalar farklı hash üretir ve önceden hesaplanmış tablolar işe yaramaz.

scrypt parametreleri

scrypt, Colin Percival tarafından 2009’da bellek-zor olacak şekilde tasarlandı. Bellek kullanımı yaklaşık 128 × N × r bayttır; araçtaki N = 2¹⁷, r = 8, p = 1 değerleri hesaplama başına yaklaşık 128 MiB bellek demektir ve OWASP önerisine karşılık gelir.

$scrypt$ln=17,r=8,p=1$<salt>$<hash>
ln, N’nin log₂ değeridir. Bu biçim bu sitenin encoded biçimidir; evrensel bir standart değildir.

scrypt mi Argon2id mi?

İkisi de bellek-zordur. Argon2id daha yeni, RFC olarak standartlaştırılmış ve parametreleri bağımsız ayarlanabilir olduğu için yeni projelerde önerilir. scrypt; Node.js crypto.scrypt, Python hashlib.scrypt ve birçok kripto para cüzdanında yerleşik olduğu için ek bağımlılık istemeyen durumlarda iyi bir seçimdir.

Sık sorulan sorular

Node.js ile aynı sonucu nasıl alırım?

crypto.scryptSync(parola, salt, 32, { N: 131072, r: 8, p: 1, maxmem: 256 * 1024 * 1024 }) aynı parametrelerle aynı 32 baytı üretir. Bu sitenin testleri bu eşleşmeyi Node.js ile karşılaştırarak doğrular.

Kaynaklar