CodeBlanks Logo Icon CodeBlanks

PBKDF2

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

Main.kt
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

Main.kt
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

Soru
val factory = SecretKeyFactory.____("PBKDF2WithHmacSHA256")
Cevap
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.

İleri seviye bölümündeki tüm dersler