PHP hash Fonksiyonu
PHP dilinde hash() fonksiyonu, belirli bir hash algoritması kullanarak girdiden (mesaj) sabit uzunlukta bir karakter dizisi üreten bir tek yönlü hashleme algoritmasıdır.
Genellikle, parolanın hash'ını oluşturarak ve düz metin parola yerine hash'ı saklayarak parolaları güvenli bir şekilde veritabanında saklamak için kullanılır.
Hash fonksiyonu, orijinal verilerin bir hash'ının önceki olarak saklanan bir hash ile eşleşip eşleşmediğini kontrol ederek verilerin bütünlüğünü de doğrulamak için kullanılabilir.
hash Fonksiyon Yapısı
hash(
string $algo,
string $data = "",
bool $binary = false,
array $options = []
): string
$algo girdinin, metnin şifrelenmesini istediğimiz şifreleme algoritması,
$data şifrelenmesini istediğimiz girdi,
$binary varsayılan olarak false tanımlıdır ve onaltılık(hexadecimal) çıktı verir, true belirtildiğinde ikili(binary) olarak çıktı verir,
$options şifrelemek için kullandığımız algoritmalarda kullanılabilecek seçeneklerin belirtilebildiği dizi
PHP'deki hash() fonksiyonu ile kullanılabilecek popüler hash algoritmaları arasında SHA-256, SHA-384, SHA-512 ve MD5 bulunur. Fonksiyon belirlenen algoritma tarafından üretilen hash değerinin string temsili olarak geri döndürür.
Örnek Kullanım
<?php
$raw_text = 'myP@55m0rd-1';
$hashed_text = hash('ripemd160',$raw_text);
echo $hashed_text;
?>
<?php
$raw_text = 'myP@55m0rd-1';
$hashed_text = hash('ripemd160',$raw_text);
echo $hashed_text;
?>
Evet, hemen üstte bulunan kod yapımızda alacağımız çıktı aşağıdaki şekilde olacaktır.
66e1afa674eb337cc33a319229755bdf1b10d5c3
Örneğimizde ripemd160 algoritmasını kullandık. Kullanabileceğiniz algoritmaların listesini hash_algos fonksiyonu yardımı ile görüntüleyebilirsiniz.
hash fonksiyonunun genel olarak kullanım alanı parolalar olsa da parola sıfırlama ve e-posta veya profil doğrulamaları gibi işlemlerde token key üretmek ve pek çok amaçla kullanılabilir.
Bir kullanıcının parolasını ham haliyle veritabanımıza işlersek bir şekilde kullanıcı verilerimizin olduğu tabloya erişebilen kişi direk şifreyi görmüş olur.
Yalnızca sızmalarla elde edilmesinden ziyade herhangi bi açık vasıtasıyla şifrenin saklandığı sütunda düzenleme yapılması halinde de giriş yetkisine erişip istenmediğimiz problemler yaşatabilir. Ayrıca şifresini görebiliyor olmakta kesinlikle bir yazılımcı için etik dışı bir davranış olduğunu bilmekte fayda var.