Yalın md5 Risk Oluşturuyor

Çok ümit etmemize rağmen kullanıcılar arasında zorlu şifre kullanmak gibi bir eğilim görülmüyor.

Rakam ve harften oluşan standart şifreler md5 ile hash edilse bile, db dökümü alınıp hash taraması yapıldığında kırılmış olarak karşımıza çıkabiliyor.

http://www.md5decrypter.co.uk/ sitesini kullanarak 30 kurumsal kullanıcının şifresini karşılaştırdığımda 13 tanesinin direk bu siteye kayıtlı olduğunu gördüm…

Yalın md5’i terk etmek ama gölgesini sistemde bırakmak için şöyle bir fonksiyon yazdım. Sizin de işinize yarar umarım.

Özgürce kullanabilirsiniz

function mds($key)
{
	/*
	Sabri Unal tarafından 
	26 Temmuz 2013 tarihinde
	Thailand/Songkhla'da yazılmıştır.
	
	Özgürce kullanabilirsiniz
	GPL and Anywhere
	*/

	/**
	* Şifre Hatırlat özelliği bulunan bir sistem için şunu önerebilirim

	Her yıl değişiminde yeniden şifrelemeye zorlamak için
	$salt2 	= date("Y"); olarak ayarlanması yeterlidir.

	Her ay yeniden şifrelemeye zorlamak için
	$salt2 	= date("Ym"); olarak ayarlanması yeterlidir.
	
	$salt0 değeri en basit şifreyi sıfır/Zero bile olsa güçlendirecek 
	sayı + harf + şekil + karakter 
	gibi zorlu bir kombinasyondan oluşmalıdır
	
	en son aşamada md5 kullanılmasının amacı çıktıyı normal bir
	md5 çıktısıymış gibi göstermektir
	*/
	
	$salt0 	= "Md55__??**!!";
	$salt1 	= 'projeyeozel1'; //bir hash
	$salt2 	= 'projeyeozel2'; //bir başka hash 
	$s0 	= md5($salt0);
	$s1 	= md5($salt1);
	$s2 	= md5($salt2);
	$f0 	= md5($key.$s0);

	//aşama 1
	$f1 = hash('sha1', 		$s0.$f0);
	//aşama 2
	$f2 = hash('sha256', 	$s1.$f1);
	//aşama 3
	$f3 = hash('sha512', 	$s2.$f2);
	//aşama 2 ters
	$f2 = hash('sha256', 	$s1.$f3);
	//aşama 1 ters
	$f1 = hash('sha1', 		$s0.$f2);
	//sadece maskeleme
	$f0 = hash('md5', 		$s2.$f1);

	return $f0;
}

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir