Make sure the info parameter contains random elements.
From: https://soatok.blog/2021/11/17/understanding-hkdf/
(PHP 7 >= 7.1.2, PHP 8)
hash_hkdf — Sağlanan anahtar girdisinden HKDF anahtar türevi oluşturur
algo
Seçilen aşlama algoritmasının ismi ("md5", "sha256", "haval160,4" ve benzerleri). Desteklenen algoritmaların listesi hash_algos() işlevinde bulunabilir.
Bilginize:
Kriptografik olmayan aşlama algoritmalarına izin verilmez.
anahtar
Kullanılacak anahtar (ikil veri). Boş olamaz.
uzunluk
İstenen çıktının bayt cinsinden uzunluğu. En çok algoritma aş uzunluğunun 255 katı olabilir.
uzunluk
olarak 0
verilirse,
öntanımlı çıktı uzunluğu seçilen aş boyutunun 255 katından
büyük olamaz.
bilgi
Application/context-specific bilgi dizgesi.
tuz
Türetme sırasında kullanılacak tuz.
Seçimlik olmasına rağmen, rasgele bir tuz HKDF'nin gücünü önemli ölçüde arttırır.
Türetilen anahtarın ham ikil gösterimini içeren bir dizge döner.
anahtar
boşsa veya algo
kriptografik değilse ya da uzunluk
negatif veya çok
(algoritma aş uzunluğunun 255 katından) büyükse, bir
ValueError istisnası oluşur.
Sürüm: | Açıklama |
---|---|
8.0.0 |
Artık hata durumunda ValueError istisnası
oluşuyor. Evvelce false döner ve bir E_WARNING
iletisi çıktılanırdı.
|
Örnek 1 - hash_hkdf() örneği
<?php
// Rasgele bir anahtar ve türetme sırasında anahtarı güçlendirecek tuz üret
$girdiAnh = random_bytes(32);
$tuz = random_bytes(16);
// yukarıda oluşturulan girdiyi kullanılarak ayrı bir anahtar çifti türet
$şifrelemeAnh = hash_hkdf('sha256', $girdiAnh, 32, 'aes-256-encryption', $tuz);
$kimlikKanıtAnh = hash_hkdf('sha256', $girdiAnh, 32, 'sha-256-authentication', $salt);
var_dump(şifrelemeAnh !== $kimlikKanıtAnh); // bool(true)
?>
Yukarıdaki örnekte, şifreleme için AES-256, kimlik kanıtlama için SHA-256 kullanılarak bir anahtar çifti üretir (encrypt-then-HMAC oluşturmaya uygun)
Make sure the info parameter contains random elements.
From: https://soatok.blog/2021/11/17/understanding-hkdf/