CodeBlanks Logo Icon CodeBlanks

AES

javax.crypto ile AES şifreleme öğrenirsin.

AES ile simetrik şifreleme

AES, simetrik bir şifreleme algoritmasıdır; aynı anahtarla şifreleme ve çözme yapılır. Cipher sınıfı AES/CBC/PKCS5Padding dönüşümünü kullanır.

Örnek: val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"). SecretKeySpec ile anahtar, IvParameterSpec ile IV verilir. ENCRYPT_MODE ile şifrele, DECRYPT_MODE ile çöz. AES, hem gizlilik hem verimlilik sağlar.

ENCRYPT_MODE ve DECRYPT_MODE

cipher.init(Cipher.ENCRYPT_MODE, key, iv) şifrelemeye, cipher.init(Cipher.DECRYPT_MODE, key, iv) çözmeye hazırlar. doFinal işlemi yapar.

Örnek: şifrele val enc = cipher.doFinal(plain.toByteArray()), çöz val dec = cipher.doFinal(enc). String(dec) orijinal metni verir. IV aynı kalmalı; anahtar gizli tutulmalı. Bu kalıp, gizli veri saklama ve aktarım için kullanılır.

Uygulama AES ile şifrele ve çöz

main içinde val key = SecretKeySpec("0123456789abcdef".toByteArray(), "AES") ve val iv = IvParameterSpec("0123456789abcdef".toByteArray()) oluştur. val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding") al. ENCRYPT_MODE ile "hello"'yu şifrele; sonra DECRYPT_MODE ile çözüp println(String(decrypted)) yazdır.

Başlangıç kodu

Main.kt
import javax.crypto.Cipher
import javax.crypto.spec.SecretKeySpec
import javax.crypto.spec.IvParameterSpec

// main'de AES anahtar ve IV oluştur
// şifrele, sonra çöz ve çözülen metni yazdır

Örnek çözüm

Main.kt
import javax.crypto.Cipher
import javax.crypto.spec.SecretKeySpec
import javax.crypto.spec.IvParameterSpec

fun main() {
    val key = SecretKeySpec("0123456789abcdef".toByteArray(), "AES")
    val iv = IvParameterSpec("0123456789abcdef".toByteArray())
    val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
    cipher.init(Cipher.ENCRYPT_MODE, key, iv)
    val enc = cipher.doFinal("hello".toByteArray())
    cipher.init(Cipher.DECRYPT_MODE, key, iv)
    val decrypted = cipher.doFinal(enc)
    println(String(decrypted))
}

Beklenen çıktı

hello

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 AES parçalarını eşle

Kavram Anlamı
Cipher.getInstance Cipher nesnesi
SecretKeySpec Anahtar
IvParameterSpec IV
ENCRYPT_MODE Şifreleme modu

2 AES şifreleme için Cipher'a hangi mod verilir?

  • SIGN_MODE
  • ENCRYPT_MODE Doğru cevap
  • HASH_MODE
  • VERIFY_MODE

Açıklama: ENCRYPT_MODE şifrelemeyi başlatır.

3 Cipher getInstance çağrısını tamamla

Soru
val cipher = Cipher.____("AES/CBC/PKCS5Padding")
Cevap
val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")

Açıklama: Cipher.getInstance dönüşümü seçer.

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