HMAC
- Kotlin kursu
- İleri seviye
- Ders 74/83
- 5 dk
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
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
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
val mac = Mac.____("HmacSHA256")
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 |