CodeBlanks Logo Icon CodeBlanks

HMAC

HMAC ile mesaj doğrulama öğrenirsin.

HMAC ile imzalı hash

HMAC, bir gizli anahtarla imzalanmış hash'tir. Mac sınıfı HmacSHA256 algoritmasını kullanır. Alıcı aynı anahtarla imzayı doğrular.

Örnek: val mac = Mac.getInstance("HmacSHA256"); mac.init(SecretKeySpec("key".toByteArray(), "HmacSHA256")); val result = mac.doFinal("data".toByteArray()). result.size ifadesi 32 döndürür. HMAC, hem bütünlük hem özgünlük sağlar; anahtarsız doğrulanamaz.

SecretKeySpec ile anahtar

SecretKeySpec, bir bayt dizisini anahtara çevirir. Mac.init'e verilir; imzalama bu anahtarla yapılır.

Örnek: val key = SecretKeySpec("secret".toByteArray(), "HmacSHA256"); mac.init(key). Anahtar gizli tutulur; alıcı ile paylaşılır. Doğru anahtar olmadan imza doğrulanamaz. Bu kalıp, API istek imzalama ve webhook doğrulama için kullanılır.

Uygulama HMAC ile imza bayt boyutu

main içinde val mac = Mac.getInstance("HmacSHA256") al, mac.init(SecretKeySpec("key".toByteArray(), "HmacSHA256")) çağır, val result = mac.doFinal("data".toByteArray()) ile imzala ve println(result.size) yazdır.

Başlangıç kodu

Main.kt
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec

// main'de HmacSHA256 al, key ile init et
// data'yı imzala, bayt boyutunu yazdır

Örnek çözüm

Main.kt
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec

fun main() {
    val mac = Mac.getInstance("HmacSHA256")
    mac.init(SecretKeySpec("key".toByteArray(), "HmacSHA256"))
    val result = mac.doFinal("data".toByteArray())
    println(result.size)
}

Beklenen çıktı

32

Soru ve cevaplar

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

1 Mac getInstance çağrısını tamamla

Soru
val mac = Mac.____("HmacSHA256")
Cevap
val mac = Mac.getInstance("HmacSHA256")

Açıklama: Mac.getInstance algoritma seçer.

2 HMAC'ın temel amacı nedir?

  • Bütünlük ve özgünlük Doğru cevap
  • Şifreleme
  • Sıkıştırma
  • Rastgele üretim

Açıklama: HMAC hem bütünlük hem özgünlük sağlar.

3 HMAC parçalarını eşle

Kavram Anlamı
Mac.getInstance Mac nesnesi
SecretKeySpec Anahtar
mac.init Anahtar yükleme
mac.doFinal İmza üretimi

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