PBKDF2
- Kotlin kursu
- İleri seviye
- Ders 77/83
- 5 dk
PBKDF2 ile parola hash'leme öğrenirsin.
PBKDF2 ile parola türetme
PBKDF2, bir parolayı kriptografik anahtara dönüştürür. SecretKeyFactory PBEKeySpec'le çalışır. Tuz (salt) ve iterasyon sayısı gücü artırır.
Örnek: val spec = PBEKeySpec("password".toCharArray(), "salt".toByteArray(), 1000, 256); val factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256"); val key = factory.generateSecret(spec).encoded. key.size ifadesi 32 döner. Bu kalıp, parolayı güvenle anahtara çevirir; gökkuşağı tablolarına karşı korur.
PBEKeySpec ve iterasyon
PBEKeySpec, parola, tuz, iterasyon ve anahtar uzunluğunu alır. Yüksek iterasyon, türetmeyi yavaşlatır; brute-force saldırılarını zorlaştırır.
Örnek: PBEKeySpec(password, salt, 10000, 256). 10000 iterasyon, her denemeyi 10000 kez yavaşlatır. Tuz, her kullanıcı için benzersiz olmalı; böylece aynı parola farklı türetilen anahtarlar verir. Bu kalıp, parola tabanlı şifreleme için esastır.
Uygulama PBKDF2 ile anahtar boyutu
main içinde val spec = PBEKeySpec("password".toCharArray(), "salt".toByteArray(), 1000, 256) oluştur. val factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256") al. val key = factory.generateSecret(spec).encoded ile anahtarı üret ve println(key.size) yazdır.
Başlangıç kodu
import javax.crypto.SecretKeyFactory
import javax.crypto.spec.PBEKeySpec
// main'de PBEKeySpec ile parola, tuz, iterasyon, boyut ver
// SecretKeyFactory ile anahtar üret, boyutunu yazdırÖrnek çözüm
import javax.crypto.SecretKeyFactory
import javax.crypto.spec.PBEKeySpec
fun main() {
val spec = PBEKeySpec("password".toCharArray(), "salt".toByteArray(), 1000, 256)
val factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256")
val key = factory.generateSecret(spec).encoded
println(key.size)
}Beklenen çıktı
32
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 SecretKeyFactory getInstance çağrısını tamamla
val factory = SecretKeyFactory.____("PBKDF2WithHmacSHA256")
val factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA256")
Açıklama: getInstance algoritmayı seçer.
2 PBKDF2 parçalarını eşle
| Kavram | Anlamı |
|---|---|
PBEKeySpec |
Türetme ayarı |
SecretKeyFactory |
Fabrika |
generateSecret |
Anahtar üretimi |
1000 |
İterasyon |
3 PBKDF2'de tuz (salt) neden kullanılır?
- Hızı artırmak için
- Anahtarı kısaltmak için
- Şifre tipini değiştirmek için
- Gökkuşağı tablularına karşı korumak için Doğru cevap
Açıklama: Tuz aynı parolanın farklı anahtarlar üretmesini sağlar.