PHP’de Şifreleme Yöntemleri
İçindekiler
Arkadaşlar bu yazıda PHP’de şifreleme yöntemlerine ele alacağız. Özellikle işin içine güvenliğe dair herhangi bir konu girince önemi tahmin edeceğiniz üzere artmaktadır. Yaptığımız çalışmalarda, oluşturduğumuz projelerimizde ve daha bir çok yerde güvenliğe önem verilmelidir. Güvenliğin göz ardı edildiği çalışmalarımız birçok kötü senaryoya zemin hazırlar.
Yaptığımız çalışmalarımızda yada projelerimizde güvenliği ilgi alanında olan örneğin parolalarda herhangi bir filtre süzgecinden geçirmeden veya şifreleme algoritmalarından geçirmeden kodlama işlemini geçirdiğimizde dışarıdan gelen bir sızma veya saldırı sonucu istenmeyen durumlar gerçekleşebilir. Bu durum hem bizi hem de yaptığımız çalışmayı kullanacak kişileri olumsuz etkiler. Güvenlik noktasında bu gibi istenmeyen durumlarla karşı karşıya kalmamak adına şifreleme yöntemlerine başvurmalıyız.
Şimdi sırasıyla bu şifreleme yöntemlerini ele alacağız. Öncelik olarak isterseniz Md5() fonksiyonu ile başlayalım.
MD5
Kriptografide Md5, 128-bit yığın düğüm değeri ile geniş çaplı olarak kullanılan bir kriptografik düğüm fonksiyonudur. Md5 algoritması ile şifreleme sonucunda 32 haneli onaltılık bir sayı dizgesi döndürürüz. Bir internet standartı olarak Md5 bir çok güvenlik uygulamasında kullanılmaktadır. Üyelik sistemlerinde parolaları şifrelemek için de kullanır. WordPress , PhpNuke ve Phpbb gibi sistemlerin şifreleri Md5 ile şifrelenerek korunmaktadır.
Md5 genellikle veri güvenliğinin kontrolünde kullanılır. Yani Md5 öncelikle bir verinin doğru transfer edilip, edilmediği ve değiştirilip, değiştirilmediğini kontrol için kullanılır.
Md5 şifreleme metodu ile şifrelenmiş bir parola kırılabilme ihtimali vardır. Bu kırılmaya sebebiyet veren durum ise parolanın yeterince uzun olmamasından ve basit şifre oluşturumundan kaynaklıdır. Fakat şifremizi belirlerken rakamları, küçük-büyük harf kullanımını ve özel karakterleri dahil edersek bu şifrenin kırılması oldukça zor olacaktır. Aşağıda Md5 metodunun kullanıma bakalım.
<?php if(isset($_GET['md5me'])) { $md5ed = md5($_GET['md5me']); } ?> <p>MD5 Değeri: <strong><?php echo $md5ed;?></strong></p> <form action="#" method="get"> <label for="md5me">MD5'de şifrelenecek değer:</label> <input name="md5me" id="md5me" type="text" /> <input type="submit" value="Şifrele" /> </form>
SHA1
Ulusal Güvenlik Ajansı (NSA) tarafından tasarlanan ve Secure Hashing Algorithm olarak adlandırılan bu metod diğer Sha algoritmaları içerisinde en yaygın olarak kullanılanıdır. Sha1 algoritması ile sadece şifreleme işlemi yapılmaktadır, şifre çözümleme işlemi yapılamaz. Md5 ve Sha1 arasındaki en temel fark oluşturdukları özetlerdeki boyutsal farklılıktır. Sha1 algoritması şifreleme sonucunda 40 haneli onaltılık bir sayı dizgesi döndürürüz.
Sha1 algoritması, e-posta şifreleme uygulamaları, güvenli uzaktan erişim uygulamaları, özel bilgisayar ağları ve daha bir çok alanda kullanılabilir. Günümüzde güvenliği daha üst seviyelere çıkartılması anlamında Md5 algoritması ile birlikte ard arda kullanılara veriler daha güçlü bir şekilde şifrelenmektedir.
Aşağıda bulunan Sha1 şifreleme yöntemini inceleyelim.
<?php if(isset($_GET['sha1me'])) { $sha1ed = sha1($_GET['sha1me']); } ?> <p>SHA1 Değeri: <strong><?php echo $sha1ed;?></strong></p> <form action="#" method="get"> <label for="sha1me">SHA1'de şifrelenecek değer:</label> <input name="sha1me" id="sha1me" type="text" /> <input type="submit" value="Şifrele" /> </form>
CRC32
Crc32 algoritması ile şifrelenen değerler Md5 algoritmasında olduğu gibi çözülmesi mümkün değildir. Bu algoritma bize şifrelenmesini istediğimiz değeri tam sayı olarak şifreleme işlemi yapar. Bu tam sayı değere göre pozitif veya negatif olmaktadır. Crc32 metodu Md5 ve Sha1 metodları gibi geri dönüşü yoktur.
Crc32 metoduna nasıl bir şekilde şifrelendiğine bir örnek ile bakalım.
<?php if(isset($_GET['crc32me'])) { $crc32ed = crc32($_GET['crc32me']); } ?> <p>CRC32 Değeri: <strong><?php echo $crc32ed;?></strong></p> <form action="#" method="get"> <label for="crc32me">CRC32'de şifrelenecek değer:</label> <input name="crc32me" id="crc32me" type="text" /> <input type="submit" value="Şifrele" /> </form>
CRYPT
Crypt metodu hemen hemen Md5 metoduyla benzerlik gösteren bir şifreleme yöntemidir. Bu fonksiyonu, Md5 metodundan farkı olarak daha karmaşık bir veri şifreleme çıktısı elde etmektedir. Bundan dolayı bazı programcılar Crypt’nin daha karmaşık bir şifreleme yapısına sahip olmasından dolayı şifreleme olarak tercihlerini bu fonksiyondan yana kullanmaktadırlar.
Aşağıda verilen örneği inceleyiniz.
<?php if(isset($_GET['crc32me'])) { $crc32gelen = crypt($_GET['crc32me']); } ?> <p>CRC32 Değeri: <strong><?php echo $crc32gelen;?></strong></p> <form action="#" method="get"> <label for="crc32me">CRC32'de şifrelenecek değer:</label> <input name="crc32me" id="crc32me" type="text" /> <input type="submit" value="Şifrele" /> </form>
Verilerimizi nasıl daha güvenli hale getirebiliriz?
Arkadaşlar bu kısımda şifrelemek istediğimiz verilerin nasıl daha güvenli hale getirilmesini ele alacağız. Basit olarak verilerimizi yukarıda bahsedilen metodlar ile ard arda şifreleme yöntemini uygulayarak daha verimli bir şifreleme yöntemi yapmış olacağız. Hazırsanız birlikte inceleyelim.
<?php if(isset($_GET['secret'])) { $sifreDüzeyiLevel1 = md5($_GET['secret']); // 1f7c89756f71819535fcb907303df85f $sifreDüzeyiLevel2 = sha1($sifreDüzeyiLevel1); // 87f156a7f6b77a09ac9aea61642eba13c33407f4 $sifreDüzeyiLevel3 = crc32($sifreDüzeyiLevel2); // 2043131373 $secretPassword = 2043131373; if ($secretPassword == $sifreDüzeyiLevel3) { echo "<script type='text/javascript'> alert('Girmiş olduğunuz parola doğrudur. Hoşgeldiniz. '); </script>"; } else { echo "<script type='text/javascript'> alert('Girmiş olduğunuz parola hatalı. Lütfen Tekrar Deneyiniz.'); </script>"; } } ?> <h5>Sisteme giriş yapmak için lütfen parolanızı giriniz:</h5> <form action="#" method="get"> <label for="secret">Şifre:</label> <input name="secret" id="secret" type="text" /> <input type="submit" value="Şifrele" /> </form>
Arkadaşlar bu yazımda PHP’de şifreleme yöntemlerini konu aldık. Şifreleme mantıklarını ele aldık ve örneklerimiz ile şifreleme yapılarını gözlemledik. Sizlerde bunlar gibi kendi şifreleme yöntemlerinizi oluşturabilirsiniz. Kripto olayı geçmişten günümüze birçok yerde kullanılmıştır. İlerleyen zamanlarda kripto ile ilişkili halde olan bazı yöntemlere ayrı bir yazıda yer vereceğim. Güvenli olması için şifrelerinizin uzun olması dileğiyle 😉 Esen kalın.
1 Yorum
[…] atıyoruz. Php’de şifreleme yöntemleri hakkında bilgi sahibi olmak istiyorsanız buradaki yazımızı inceleyebilirsiniz. crypt ile şifrelenmiş sayımızın 6 karakterden ibaret olması […]