Veri güvenliğinin ne kadar önemli olduğunu hepimiz biliriz. Bu yazımda PHP'deki şifreleme metotlarını anlatacağım. Bu metotlar sayesinde çözülemeyecek kriptolamalar ( şifrelemeler) yapabileceğiz.
Hadi başlayalım.
Kriptolama Nedir?
Bir yazının veya metnin başkaları tarafından okunmasının önlenmesi için bir kurala (algoritmaya) bağlı olarak anlamsız bir şekle dönüştürülmesidir.
Neden kriptolama yaparız onu açıklayalım. Örneğin bir web sayfamız var ve sayfamızda kayıtlı kullanıcılarımız var. Bu kullanıcıların bilgilerini veritabanlarında tutarız. Kullanıcının en özel bilgilerinden birisi şifresidir. Bu şifre veritabanında saf halde tutmak yerine kriptolayıp tutmak çok daha güvenlidir. Örneğin Mehmet adında bir kullanıcımız var ve şifresi mehmet123 bu şifreyi direkt olarak mehmet123 şeklinde tutmak yerinde mehmet123 değerini kriptolayıp kriptoladığımız değeri tutarsak, veritabanımızın başkalarının eline geçmesi durumunda kriptoladığımız değeri çözemiyeceği için kullanıcılarımızın güvenliği, gizliliğini sağlamış oluruz.
Kriptolama işlemi yapmak için onlarca algoritma vardır. Ben bu yazıda bir kaç tanesine değiniceğim isterseniz diğerlerine kendiniz bakabilirsiniz.
Kodlamaya geçmeden önce belirtmem gereken bir husus var. Oluşturduğum değişkenlerin değerleri bir formdan geliyor diye düşünebilirsiniz.
İlk metodumuz uniqid().
uniqid() : Mikrosaniye cinsinden geçerli zamana dayalı olarak belirtilen ön ek ile benzersiz / eşsiz bir değer üreterek ürettiği değeri geriye döndürür. Parantezler içine değer girip üretilecek benzersiz kimlik değerinin önüne ek olarak koyabiliriz.
$Olustur = uniqid();
echo $Olustur;
Bu kodun çıktısı bu şekildedir : 5f634311b61f6
Unutmayınki bu kod her çalıştığında yeni bir değer üretecektir ve mikrosaniye cinsinden geçerli zamana dayalı olduğu için hiç bir zaman ürettiği değeri bir daha üretmeyecektir.
İkinci metodumuz mt_rand().
mt_rand() : Bu metot rastgele bir sayı üretmemizi sağlar.
$Olustur = mt_rand();
echo $Olustur;
Bu kodun çıktısı bu şekildedir : 1052547927
Rastgele herhangi bir sayı ürettirdik. Her çalıştığında rastgele bir sayı üreteceğini unutmayalım.
Şimdi sıra geldi kriptolama metotlarımıza.
Kriptolamak için kullanacağımız birinci metodumuz md5() metodu.
md5() : Belirtilecek olan içeriğin md5 özetini hesaplayıp bularak, bulduğu değeri geriye döndürür.
$Sifre = "mehmet123";
$Olustur = md5($Sifre);
echo $Olustur;
Bu kodun çıktısı bu şekildedir : 5232523ab4dce3a8cb6191ead18068f3
Kriptolamak için kullanacağımız birinci metodumuz sha1() metodu.
sha1() : Belirtilecek olan içeriğin sha1 özetini hesaplayıp bularak, bulduğu değeri geriye döndürür.
$Sifre = "mehmet123";
$Olustur = sha1($Sifre);
echo $Olustur;
Bu kodun çıktısı bu şekildedir : 8fa33c55bab9eefe351c993c0a4f69060a298c58
Evet sayın okurlar metotların hepsini yazdım şimdi sıra bunların hepsini birlikte kullanıp asla çözümlemesi olmayan bir kriptolama yapmakta.
$Kriptola = sha1(md5(uniqid(mt_rand())));
echo $Kriptola;
Bu kodun çıktısı bu şekildedir : f0b0a597ff1de6714d2342163d17b94489e33e51
Burada yaptığımız işlemi anlatmak gerekirse, uniqid() metoduyla benzersiz bir kimlik değeri ürettirdik, sonra uniqid() parantezlerinin içine mt_rand() metodunu yazdık. Yani rastgele bir sayı üretip, ürettiğimiz sayıyı benzersiz kimlik değerinin önüne ek olarak ekledik. Böylece daha karmaşık bir yapıya sahip olduk. Sonra md5() metoduyla uniqid() ile ürettiğimiz benzersiz kimlik değerini md5() algoritmasına göre kriptoladık. Son olarakta tüm bu metotlarımızın üretmiş oldukları değeri sha1() algoritmasıyla kriptoladık. Çözümlenmesi imkansız hale gelmiş durumda 🙂
Unutmayın burası çokomelli 🙂
Burada oluşturduğumuz yapıların kontrolü çok iyi yapılmalıdır. Aksi takdirde kriptoladığımız hiç bir değeri geriye döndüremeyiz. Örneğin kullanıcı siteye üyelik girişi yapacak, formdan şifresini aldık şifreyi gösterdiğim gibi kriptoladık ve veritabanımıza kaydettik. Kullanıcı giriş yaparken, kriptolanmış değeri daha önceden kullanici sisteme kaydolurken kriptoladığımız şifre değeriyle karşılaştırıp kullanıcıya giriş izni vermemiz gerekiyor. Eğerki kaydolurken veya giriş yaparken yanlış bir kriptolama işlemi yaparsak kullanıcımız siteye giriş yapamayacaktır.
Bu yüzden bu metodların kontrolü iyi bir şekilde yapılmalıdır.
Bu yazıda kriptolamanın ne olduğuna ve neden kriptolama yapmamız gerektiğine değindik bir sonraki makalede görüşmek üzere.
İyi çalışmalar.