Aslında burada şifrelemeden kastım "hash"leme işlemi. Genel anlamda bu gibi durumların "şifreleme" gibi düşünülmesinden dolayı bu şekilde yazdım. Bende ilk zamanlar böyle düşünüyordum ve bu yazının içeriğini de aslında farklı yazmıştım ama; zaman geçtikçe ve araştırmalar yaptıkça bunun böyle olmadığını gördüm :) Bir çok eleştiri de aldım bu konuyla ilgili ama, kim yeni başladığını şeylerde hatalar yapmıyor ki? :) Neyse çok uzatmayayım. Özetleyecek olursak, aşağıda işinize yarayabilecek en popüler hashleme ve kodlama tekniklerinden örnekler vereceğim. Zaten genel bir araştırma yapınca bu konular için karşınıza çıkacak muhtemel sonuçlar; MD5, SHA1, BASE64 vs gibi konular olacak. PHP'de bunlar nasıl kullanılıyormuş, ne gibi bir şey elimize geçiyormuş, alternatif olarak neler yapabiliriz bir göz atalım.MD5MD5 algoritması ile hashleme sonucunda 16'lık bir karakter dizgesinden 32 karakterlik bir değer elde edilir. MD5 metodu ile hashlenen bir değerin, geriye dönüşü olmaz. Yani bu fonksiyon ile hashlenen bir dizgeyi tekrar eski haline dönüştüremezsiniz. MD5 her ne kadar geri dönüştürülemediği için güvenli gibi gözükse de, güvenliğimiz için kolay verileri hashlemekten kaçınırsak iyi ederiz. Veya hashlenecek veriye ek olarak sadece bizim bildiğimiz bir ifade ekleyip (salt) hashleme işlemini biraz daha zor bir hale getirebiliriz. Şimdi MD5 ile hashlenmiş bir veriye bakalım:<?php $x = 123456; echo md5($x); // çıktısı: e10adc3949ba59abbe56e057f20f883emd5'i detaylı inceleyinSHA1SHA1 algoritması da 16'lık bir karakter dizgesinden 40 karakterlik bir değer elde eder. MD5 için verdiğim önerileri, burada da dikkate alabilirsiniz. Yukardaki örneği bir de sha1 ile hashleyelim:<?php $x = 123456; echo sha1($x); // çıktısı: 7c4a8d09ca3762af61e59520943dc26494f8941bsha1'i detaylı inceleyinBASE64BASE64 bir kodlama tekniği, bir encoding algoritması olarak söylenebilir ve diğer metotların aksine geri dönüştürülebilir. Yani encode ettiğiniz bir veriyi, tekrar eski haline getirebilirsiniz. BASE64 ile encode ettiğiniz veri, orjinal içeriğe göre %30 daha fazla yer kaplar. (Bunu bir yerde okumuştum ama, şu an kaynak veremiyorum. Yanlış bilgiyse beni de bilgilendirin lütfen.) PHP'de bu encoding metodunu kullanmak için base64_encode, geri dönüştürmek için ise base64_decode fonksiyonlarını kullanacağız.<?php $x = 123456; $encode_veri = base64_encode($x); // çıktısı: MTIzNDU2 $orjinal_veri = base64_decode($encode_veri); // çıktısı: 123456 echo 'Encode edilen veri:'.$sifreli_veri.'<br />'; echo 'Orjinal veri:'.$orjinal_veri;base64'ü detaylı inceleyinBunlara ek olarak;Daha karışık ve olabildiğince benzersiz hashler elde etmek için yukarıda örneklerini görmüş olduğumuz metotları birden fazla veya 2-3 farklı metodu bir arada kullanabilirsiniz. Örneğin verinizi önce sha1, sonra md5 ile hashleyebilirsiniz. Bunun yanı sıra yukarda da belirttiğim gibi; verinizin başına veya sonuna sadece sizin tarafınızdan bilenecek bir ek veri (salt) ekleyebilirsiniz ve bu şekilde hashleme yapabilirsiniz. Böylece bulunması daha zor bir hash elde etmiş olursunuz. Bunun yanı sıra, PHP'de bulunan password_hash, hash_hmac ve diğer hash_* metotlarını da kesinlikle incelemenizi ve kullanmanızı öneririm. Yukarıdaki metotlar her ne kadar daha çok bilinen ve basit anlamda tercih edilen yöntemler olsa da, bahsettiğim metotlar ile daha karmaşık hashler üretmeniz mümkün. Ayrıca yine yukarıda bahsettiğim verinize ek bir salt ekleme işlemini, bu metotlarda varsayılan olarak bulabilir ve kullanabilirsiniz. Umuyorum ki faydası olan bir yazı olmuştur. Soru veya görüşlerinizi yorum kısmından yazabilirsiniz.Sağlıcakla kalın. :)