PHP İle Güçlü Şifreleme
Veritabanında sakladığımız şifreleri genellikle md5 algoritması ile şifreleyip öyle saklarız. md5 geri çözülemeyen bir şifreleme yöntemidir ama son zamanlarda artık md5 şifreler bile kırılabilmektedir.
İlk yazımda size bahsetmek istediğim kırılamıyacak şifreler üretmek için alternatif bir yöntem. Bunun için PHP dilinde bir fonksiyon ile örnek vereceğim.
Bu şifreleme yönteminde kullanmak için elimizde rastgele 64 karakterden oluşan bir string olmalı. Bunun için şurdan yararlanabilirsiniz. Öncelikle şifrelemek istediğimiz stringi alıp karakterlere ayırıyoruz. Ardından her bir karakteri daha önceden oluşturmuş olduğumuz stringe dahil ederek birleştiriyoruz. Tabi birleştirmeden önce her bir karakteri md5 metodundan geçiriyoruz. Sonuçta elimizde girilen şifreninde karakter sayısına bağlı olarak çok uzun bir string olacaktır. Bunu son koz md5 metodundan geçirip 32 karakterlik bir katara indirgiyoruz. İşte elimizde geri çözülmesi pek mümkün olmayan bir hash değeri elde etmiş oluyoruz. Aşağıdaki PHP metodu bu anlatılan işi yapmaktadır.
/*
* Bu metod verilen bir stringi sifreleyip bir hash degeri dondurur.
*
* @param $password
*/
function strongEncode($password) {
$salt = '3C305A3C1ED1B8D01C9CCC0F024B2B81B53CC28F356022E841CD08286C8C8E1A';
// PHP5 kullaniyorsak
if (function_exists('str_split')) {
$pass = str_split($password);
} else { // PHP4 kullaniyorsak
$pass = array();
if (is_string($password)) {
for ($i = 0; $i < strlen($password); $i++) {
array_push($pass, $password[$i]);
}
}
}
// Her bir karakteri sifreleyip $salt ile birleştirelim
foreach ($pass as $hashpass) {
$salt .= md5($hashpass);
}
// Son olarak md5 ile sifreleyip dondurelim
return md5($salt);
}
October 9, 2009 at 1:23 am | Onur Özgür ÖZKAN
Kıvanç’cığım bu yararlı yazın için teşekkür ediyorum. Diğer yazılarını sabırsızlıkla bekliyorum.