Merhaba,
Bugün size PHP'de Password Hashing işlevlerinden bahsedeceğim.
Password Hashing nedir?
- Şifre üretmeye yarayan bir işlevdir. Bu işlevler ile şifreler oluşturabilir, şifrelerin doğruluğunu kontrol edebiliriz.
Password Hashing fonksiyonları nelerdir?
- Password Hashing işlevlerinde; password_ hash, password_ get_ info, password_ verify, password_ needs_ rehash
Password Hashing fonksiyonları nasıl kullanılır?
- password_hash fonksiyonunun alabileceği değerler şöyledir;
-> password (İşlevde kullanılacak olan şifre),
-> algo (İşlevide kullanılacak olan algoritma),
-> options (İşlevde kullanılacak olan ekstra ayarlar)
- password_get_info fonksiyonunun alabileceği değerler şöyledir;
-> password (İşlevin oluşturduğu hash değeri),
- password_verify fonksiyonunun alabileceği değerler şöyledir;
-> password (İşlevin oluşturma esnasında kullandığı şifre),
-> hash (İşlevin oluşturduğu hash değeri)
- password_needs_rehash fonksiyonunun alabileceği değerler şöyledir;
-> hash (İşlevin oluşturduğu hash değeri),
-> algo (İşlevde kullanılmış olan algoritma),
-> options (İşlevde kullanılmış olan ekstra ayarlar)
Password Hashing işlevleri PHP'nin kaçıncı sürümde dahil edildi?
- Password Hashing işevleri PHP 5.5 sürümünde dahil edildi.
Password Hashing işlevlerini PHP 5.5 sürümünden önceki sürümlerde kullanabilir miyim ?
- Evet, password_compact paketi ile bu fonksiyonları PHP 5.5 sürümünden önceki sürümlerde kullanabilirsiniz.
Bir sonraki konumda görüşmek üzere sağlıcakla kalın. Bu arada konuyu okudaktan sonra bi' teşekkürü çok görmezsiniz umarım
Bugün size PHP'de Password Hashing işlevlerinden bahsedeceğim.
Password Hashing nedir?
- Şifre üretmeye yarayan bir işlevdir. Bu işlevler ile şifreler oluşturabilir, şifrelerin doğruluğunu kontrol edebiliriz.
Password Hashing fonksiyonları nelerdir?
- Password Hashing işlevlerinde; password_ hash, password_ get_ info, password_ verify, password_ needs_ rehash
Password Hashing fonksiyonları nasıl kullanılır?
- password_hash fonksiyonunun alabileceği değerler şöyledir;
-> password (İşlevde kullanılacak olan şifre),
-> algo (İşlevide kullanılacak olan algoritma),
-> options (İşlevde kullanılacak olan ekstra ayarlar)
Örnek 1 (password_hash);
Yukarıdaki örneğin çıktısı;
Örnek 2 (password_hash);
Yukarıdaki örneğin çıktısı;
Örnek 3 (password_hash);
Yukarıdaki örneğin çıktısı;
PHP:
<?php
# En basit haliyle işlevin kullanımı
echo password_hash("rasmuslerdorf", PASSWORD_DEFAULT)."\n";
?>
Yukarıdaki örneğin çıktısı;
Kod:
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
Örnek 2 (password_hash);
PHP:
<?php
# İşlevin CPU'da ne kadar harcayabileceğini belirtiyoruz
# Not; cost değeri 4'den küçük 31'den büyük olamaz.
$options = [
'cost' => 12
];
# İşlevi çalıştırıyoruz
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>
Yukarıdaki örneğin çıktısı;
Kod:
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
Örnek 3 (password_hash);
PHP:
<?php
# İşlevin CPU'da ne kadar harcayabileceğini belirtiyoruz
# İşlevin salt değerini rastgele bir şekilde oluşturuyoruz
# Not; cost değeri 4'den küçük 31'den büyük olamaz.
# Uyarı; salt değeri statik girmeniz önerilmez, rastgele değer alması daha iyidir.
$options = [
'cost' => 12,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM)
];
# İşlevi çalıştırıyoruz
echo password_hash("rasmuslerdorf", PASSWORD_BCRYPT, $options)."\n";
?>
Yukarıdaki örneğin çıktısı;
Kod:
$2y$11$q5MkhSBtlsJcNEVsYh64a.aCluzHnGog7TQAKVmQwO9C8xb.t89F.
- password_get_info fonksiyonunun alabileceği değerler şöyledir;
-> password (İşlevin oluşturduğu hash değeri),
Örnek 1 (password_get_info);
Yukarıdaki örneğin çıktısı;
PHP:
<?php
# İşlevin oluşturduğu hash değeri hakkında bize bilgi verir.
print_r(password_get_info('$2y$12$Gp0AmzuPibCtSZ2aPV2Yk.kA/cX/iP3XQWj2qMFHL0S8jMSPCi4oO'));
?>
Yukarıdaki örneğin çıktısı;
Kod:
Array
(
[algo] => 1
[algoName] => bcrypt
[options] => Array
(
[cost] => 12
)
)
- password_verify fonksiyonunun alabileceği değerler şöyledir;
-> password (İşlevin oluşturma esnasında kullandığı şifre),
-> hash (İşlevin oluşturduğu hash değeri)
Örnek 1 (password_verify);
Yukarıdaki örneğin çıktısı;
PHP:
<?php
# İşlevin oluşturduğu hash değeri ile girilen şifreyi karşılaştırır.
# Eğer eşleştirme doğru sonuçlanırsa true yanlış sonuçlanırsa false döndürür.
var_dump(password_verify('http://www.r10.net/', '$2y$12$Gp0AmzuPibCtSZ2aPV2Yk.kA/cX/iP3XQWj2qMFHL0S8jMSPCi4oO'));
?>
Yukarıdaki örneğin çıktısı;
Kod:
bool(true)
- password_needs_rehash fonksiyonunun alabileceği değerler şöyledir;
-> hash (İşlevin oluşturduğu hash değeri),
-> algo (İşlevde kullanılmış olan algoritma),
-> options (İşlevde kullanılmış olan ekstra ayarlar)
Örnek 1 (password_needs_rehash);
Yukarıdaki örneğin çıktısı;
PHP:
<?php
/*
password_needs_rehash işlevi oluşturulan hash değerin
yeniden oluşturulup oluşturulmamasını bize belirtir.
Eğer yeniden oluşturulması gerekiyorsa true gerekmiyorsa
false değerlerini döndürür.
*/
# İşlevde kullanılacak olan şifre
$password = 'http://www.r10.net/';
# İşlevde kullanılacak olan ekstra ayarlar
$options = [
'cost' => 12,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM)
];
# Hash değerimizi üretiyoruz
$password_hash = password_hash($password, PASSWORD_DEFAULT, $options);
# Hash değerimizin yeniden oluşturulmaya gerek duyup duymadığını öğreniyoruz
$needs_rehash = password_needs_rehash($password_hash, PASSWORD_DEFAULT, $options);
# Eğer yeniden oluşturulması gerekip gerekmediğini ekrana yazdırıyoruz
if($needs_rehash == true) {
echo 'Hash değeri yeniden oluşturulması gerekmiyor.';
} else {
echo 'Hash değeri yeniden oluşturulması gerekiyor.';
}
?>
Yukarıdaki örneğin çıktısı;
Kod:
Hash değeri yeniden oluşturulması gerekiyor.
Password Hashing işlevleri PHP'nin kaçıncı sürümde dahil edildi?
- Password Hashing işevleri PHP 5.5 sürümünde dahil edildi.
Password Hashing işlevlerini PHP 5.5 sürümünden önceki sürümlerde kullanabilir miyim ?
- Evet, password_compact paketi ile bu fonksiyonları PHP 5.5 sürümünden önceki sürümlerde kullanabilirsiniz.
Bir sonraki konumda görüşmek üzere sağlıcakla kalın. Bu arada konuyu okudaktan sonra bi' teşekkürü çok görmezsiniz umarım