AES
- Kotlin kursu
- İleri seviye
- Ders 75/83
- 5 dk
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
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
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
val cipher = Cipher.____("AES/CBC/PKCS5Padding")
val cipher = Cipher.getInstance("AES/CBC/PKCS5Padding")
Açıklama: Cipher.getInstance dönüşümü seçer.