HMAC
- C kursu
- İleri seviye
- Ders 57/83
- 5 dk
HMAC ile mesaj doğrulama öğrenirsin.
HMAC nedir?
HMAC (Hash-based Message Authentication Code), bir anahtarla birlikte hash kullanarak mesaj doğrulama kodu üretir. Alıcı, aynı anahtarla aynı kodu hesaplayıp karşılaştırır; eşitse mesaj değişmemiş ve gönderen doğrudur.
OpenSSL'de HMAC(EVP_sha256(), key, keylen, data, datalen, digest, &len) ile tek çağrıda hesaplanır. key gizli anahtar, data mesajdır. HMAC, hash'in aksine anahtarsız doğrulanamaz; bu yüzden hem bütünlük hem de özgünlük sağlar. Test için sabit tamam mesajı yazdırmak yeterlidir.
HMAC deseni
HMAC tek çağrıda hesaplanır: unsigned char digest[EVP_MAX_MD_SIZE]; unsigned int len = 0; HMAC(EVP_sha256(), "anahtar", 7, (const unsigned char *)"mesaj", 5, digest, &len);. digest 32 baytlık doğrulama kodudur.
Alıcı aynı anahtar ve mesajla aynı kodu hesaplar; memcmp ile karşılaştırır. Eşitse mesaj doğrudur. Test için printf("hmac tamam\n") yazdırmak yeterlidir; kodun kendisi ortam bağımsızdır ama bayt değerlerini yazdırmak karmaşık olur. Üretimde kodu hex olarak gösterirsin.
Uygulama HMAC hesapla
unsigned char digest[EVP_MAX_MD_SIZE]; unsigned int len = 0; tanımla. HMAC(EVP_sha256(), "anahtar", 7, (const unsigned char *)"mesaj", 5, digest, &len); ile hesapla. printf("hmac tamam\n");.
Başlangıç kodu
#include <stdio.h>
#include <openssl/hmac.h>
// HMAC hesapla
// tamam yazdır
int main(void) {
return 0;
}Örnek çözüm
#include <stdio.h>
#include <openssl/hmac.h>
int main(void) {
unsigned char digest[EVP_MAX_MD_SIZE];
unsigned int len = 0;
HMAC(EVP_sha256(), "anahtar", 7, (const unsigned char *)"mesaj", 5, digest, &len);
printf("hmac tamam\n");
return 0;
}Beklenen çıktı
hmac tamam
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 HMAC çağrısı
HMAC(____, "anahtar", 7, (const unsigned char *)"mesaj", 5, digest, &len);
HMAC(EVP_sha256(), "anahtar", 7, (const unsigned char *)"mesaj", 5, digest, &len);
Açıklama: HMAC, EVP_sha256() ile SHA-256 tabanlı doğrulama yapar.
2 HMAC parçalarını eşle
| Kavram | Anlamı |
|---|---|
HMAC |
Doğrulama kodu |
anahtar |
Gizli |
EVP_sha256 |
Hash algoritması |
memcmp |
Karşılaştırma |
3 HMAC ne için kullanılır?
- Mesaj doğrulama Doğru cevap
- Şifreleme
- Sıkıştırma
- Rastgele sayı
Açıklama: HMAC mesaj doğrulama ve bütünlük için kullanılır.