hash_pbkdf2

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

hash_pbkdf2Belirtilen bir parolanın PBKDF2 anahtar türevini döndürür

Açıklama

hash_pbkdf2(
    string$algo,
    string$parola,
    string$tuz,
    int$yineleme,
    int$uzunluk = 0,
    bool$ikil = false
): string

Bağımsız Değişkenler

algo

Seçilen aşlama algoritmasının ismi ("md5", "sha256", "haval160,4" ve benzerleri). Desteklenen algoritmaların listesi hash_algos() işlevinde bulunabilir.

parola

Türetim için kullanılacak parola.

tuz

Türetim için kullanılacak tuz. Rasgele bir değer üretilmelidir.

yineleme

Türetim için dahili olarak uygulanacak yinelemelerin sayısı.

uzunluk

Çıktı dizgesinin uzunluğu. ikiltrue ise türetilen anahtarın bayt cinsinden uzunluğudur; false ise türetilen anahtar uzunluğunun iki katı olmalıdır (her bayt için iki harf/rakam döner).

0 ise belirtilen algoritmanın tüm çıktısı kullanılır.

ikil

true ise ham ikil veri, false ise küçük harfli onaltılıklar çıktılanır.

Dönen Değerler

ikiltrue ise türetilen anahtarın ham ikil gösterimi, false ise küçük harfli onaltılık gösterimi döner

Hatalar/İstisnalar

Algoritma bilinmiyorsa, yineleme sıfırdan küçük veya eşitse, uzunluk sıfırdan küçükse veya tuz çok uzunsa (INT_MAX - 4'ten büyükse), bir ValueError istisnası oluşur.

Sürüm Bilgisi

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ı.
7.2.0Kriptografik olmayan aş işlevlerinin (adler32, crc32, crc32b, fnv132, fnv1a32, fnv164, fnv1a64, joaat) kullanımı iptal edildi.

Örnekler

Örnek 1 - hash_pbkdf2() genel kullanım örneği

<?php
$parola
= "password";
$yineleme = 600000;

// random_bytes() kullanarak kriptografik olarak güvenli rastgele tuz üret
$tuz = random_bytes(16);

$aş = hash_pbkdf2("sha256", $parola, $tuz, $yineleme, 20);
var_dump($aş);

// ham ikil durumunda, eşdeğer sonuç için $uzunluk yarıya düşer
$aş = hash_pbkdf2("sha256", $parola, $tuz, $yineleme, 10, true);
var_dump(bin2hex($aş));?>
?>

Yukarıdaki örnek şuna benzer bir çıktı üretir:

string(20) "120fb6cffcf8b32c43e7" string(20) "120fb6cffcf8b32c43e7"

Notlar

Dikkat

PBKDF2 yöntemi depolama için parolaları aşlamada kullanılabilir. Bununla birlikte, password_hash() veya CRYPT_BLOWFISH ile crypt() parola depolamaya daha uygundur.

Ayrıca Bakınız

To Top