Hash/Kripto

HMAC Generator

Bir metnin veya dosyanın HMAC (Hash-based Message Authentication Code) değerini gizli bir anahtarla hesaplayın — sekiz algoritmayla aynı anda: MD5, SHA-1, SHA-256, SHA-384, SHA-512, SHA3-256, SHA3-512, RIPEMD-160.

HMAC (Hash-based Message Authentication Code) is a hash computed together with a secret key, proving a message hasn't changed and was sent by someone who knows that key. Unlike a plain hash, an HMAC can't be forged without knowing the secret.

How to use it

Common uses

Things to keep in mind

HMAC protects against tampering and confirms the sender's authenticity, but it doesn't encrypt the message itself — the content stays readable.

A mismatched HMAC is most often caused by different data encoding (e.g. JSON field order) or a stray whitespace or line break, not by a bug in the algorithm itself.

Bu araç hakkında makale: HMAC: anahtarlı bir hash sıradan bir hash'ten nasıl farklıdır

Sıkça sorulan sorular

HMAC ile düz bir hash arasındaki fark nedir?

Düz bir hash yalnızca verinin değiştirilmediğini kanıtlar; HMAC ayrıca bir gizli anahtar kullanır, bu yüzden hem bütünlüğü hem de gönderenin paylaşılan sırrı bildiğini kanıtlar — anahtar olmadan biri, algoritmayı bilse bile geçerli bir HMAC üretemez.

HMAC için hangi hash algoritmasını seçmeliyim?

HMAC-SHA256 sağlam bir modern varsayılandır. HMAC-MD5 veya HMAC-SHA1 gibi eski seçenekler özellikle HMAC olarak henüz kırılmamıştır, ancak yeni sistemler için SHA-256 veya daha güçlüsü önerilir.

Gizli anahtarım bir yere gönderiliyor mu?

Hayır. HMAC tamamen tarayıcınızda Web Crypto API aracılığıyla hesaplanır — anahtar ve mesaj cihazınızdan asla çıkmaz.

HMAC neden sıradan eşitlik operatörüyle karşılaştırılamaz?

Sıradan dize karşılaştırması ilk uyuşmazlıkta durur ve yürütme süresi, saldırgana ilk kaç karakteri doğru tahmin ettiğini gösterir (timing attack). PHP'deki hash_equals gibi sabit zamanlı karşılaştırma fonksiyonları gereklidir.

Aynı anahtar birden fazla farklı amaç için kullanılabilir mi?

Önerilmez. Aynı gizli anahtar hem webhook imzalama hem de başka bir amaç için kullanılırsa, bir sistemin ele geçirilmesi otomatik olarak diğerini de ele geçirir — her ayrı amaç için ayrı bir anahtar üretilmelidir.

Makaleler: Hash/Kripto

Hash Generator: MD5, SHA-1 ve SHA-256 birbirinden nasıl farklıdır

MD5'in neden hâlâ dosya bütünlüğünü doğrulamak için kullanıldığı, ama parolalar için değil.

Checksum Verifier: bir dosyanın bozuk olmadığı nasıl kontrol edilir

Eşleşen bir sağlama toplamının bir dosyanın bütünlüğünü onayladığını ama onu kimin oluşturduğunu onaylamadığını.

Bcrypt: parolalar neden hızlı değil yavaş hash'lenir

Hızlı bir SHA-256'nın parolalar için neden kötü bir seçim olduğu, yavaş bcrypt'in ise doğru seçim olduğu.

UUID: neredeyse hiç tekrarlanmayan tanımlayıcılar nasıl üretilir

UUID v4'ün milyonlarca makinede çakışma riski olmadan bağımsız olarak neden üretilebildiği.

Parola Üreteci: bir parolayı gerçekte ne güçlü kılar

Sözlük kelimelerinden oluşan uzun bir parolanın, sembollü ve rakamlı kısa bir paroladan neden daha güçlü olduğu.

AES: simetrik şifreleme nasıl çalışır

AES'te aynı anahtarın verileri neden hem şifrelediği hem çözdüğü, ve bunun asimetrik şifrelemeden nasıl farklı olduğu.

Argon2: bu algoritma parola hash'leme yarışmasını neden kazandı

Argon2'nin GPU ile yapılan saldırılara karşı eski parola hash'leme algoritmalarından nasıl daha iyi savunma sağladığı.

Scrypt: algoritma neden bu kadar çok belleğe ihtiyaç duyar

Scrypt'in ASIC cihazlarda kırmayı zorlaştırmak için neden kasıtlı olarak çok bellek gerektirdiği.

TOTP: kimlik doğrulama uygulamalarındaki tek kullanımlık kodlar nasıl çalışır

Google Authenticator'daki kodun internet olmadan neden çalıştığı ve sunucuyla yalnızca zaman üzerinden neden senkronize olduğu.

PBKDF2: en eski anahtar germe standardı

Önerilen PBKDF2 iterasyon sayısının her yıl neden arttığı.

X.509: bir SSL sertifikasının içinde ne var

Tarayıcının yeşil kilidi göstermeden önce bir sitenin sertifikasında tam olarak neyi kontrol ettiği.

PGP: genel ve özel anahtarla şifreleme nasıl çalışır

Bir PGP genel anahtarının neden özgürce paylaşılabildiği ama özel anahtarın asla paylaşılmaması gerektiği.