PHP Metin Şifreleme Algoritmaları

php-sifrelemeŞifreleme fonksiyonları kullanılarak veritabanında saklanan önemli bilgilerin güvenliği biraz daha arttırılabilir.Örneğin; veritabanında bulunan üyelerin şifrelerini olduğu gibi kaydettiğinizi düşünelim.Eğer saldırgan bir kullanıcı veritabanındaki bilgilere erişirse artık üyelerinizin hesapları tehlikededir.Ayrıca birçok kullanıcı tüm web sayfalarında aynı parolalarını kullandığını düşünürsek, belkide üyelerimizi daha fazla tehlikeye sürüklemiş olabiliriz.

Bu bölümde sizlere bazı şifreleme fonksiyonlarını tanıtacağım.Bu fonksiiyonların nası kullanıldığını ve varsa şifrelenmiş veriyi nasıl çözebileceğimizi ifade edeceğim.

MD5 Algoritması

MD5 algoritması, şifreleme sonucunda 32 haneli onaltılık bir sayı dizgesi döndürür.Md5 fonksiyonu ile şifrelenen bir dizgeyi tekrardan geri dönüştüremezsiniz.Md5 algoritması oldukça güvenli bir şifreleme gerçekleştirsede basit parolalar kolayca tespit edilebilir.Md5 in kullanımı oldukça kolaydır.

1
2
3
4
5
<?php
$dizge="oun@bu7is";
$sifreli=md5($dizge);
echo $sifreli;
?>

Bu örnekte md5 fonksiyonu eafdd5d6b58587d1b0b2e338168da940 değerini döndürecektir.Gerçekten bu değeri çözmek çok zordur.

1
2
3
4
5
6
7
8
9
10
<?php
$parola="eafdd5d6b58587d1b0b2e338168da940";
$dizge="oun@bu7is";
  
  if($parola==md5($dizge)) {
    echo 'Esit';
  } else{
    echo 'Esit Degil';
  }
?>

CRC32

Bu şifreleme algoritması ile kodlanan dizgeler Md5 algoritmasında olduğu gibi çözülmesi mümkün değildir.Eğer sorgulama yapmak isterseniz,Md5 algoritmasında vermiş olduğumz örnekte olduğu gibi iki değerin şifreli hallerini karşılaştırmanız gerekmektedir.Crc32 algoritmasıi kendisine gönderilen dizgeyi şifreleyerek dizgenin durumuna göre pozitif veya negatif tamsayı değeri döndürür.Şifrelenmek istenen dizge crc32() fonksiyonuna gönderilmesi yeterlidir.

1
2
3
4
5
<?php
$dizge="oun@bu7is";
$sifreli=crc32($dizge);
echo $sifreli;
?>

SHA1 Algoritması

Sha1 algoritması da Md5 ve Crc32 kodlama yöntemlerinde olduğu gibi geri dönüşü olmayan bir şifreleme algoritmasıdır.Bu algoritma,şifreleme sonucunda 40 haneli onaltılık bir sayı dizgesi döndürür.

1
2
3
4
5
6
7
8
9
10
11
<?php
$parola="oun@bu7is";
  
  if(sha1($parola)=='9ec78dc260989bb2bec5ce9eadca6efe76814b9d') {
    echo 'Parola doğru';
    exit;
  } else{
    echo 'Parola Hatalı';
  }
?>

Bu örnekte önceki örneklerin aksine direkt olarak karşılaştırma yöntemi kullanmayı tercih ettim.If koşulunun içerisinde bulunan şifrelenmiş dizge aslında oun@buis7 dizgesinin kodlanmış halidir.Buna göre sha1() fonksiyonu ile $parola değişkeni şifrelenerek,kodlanmış veriye eşit olup olmadığı kontrol ediliyor.

BASE64

Bu şifreleme algoritması basit seviyede şifreleme gerçekleştirir.Base64 algoritması ile şifrelenen veriler çözülebilir.Base64 ile şifrelenmiş veri,orjinal veriden %33 daha fazla yer kaplar.Bu şifreleme algoritmasını kullanarak verileri şifrelemek için base64_encode() ve base64 algoritması ile şifrelenmiş dizgeyi çözmek için ise, base64_decode() fonksiyonları kullanılır.

1
2
3
4
5
6
<?php
$dizge="oun@bu7is";
$sifreli=base64_encode($dizge);
echo $sifreli;
echo base64_decode($sifreli);
?>

Güvenlik İpuçları

Bu bölümde , dizgeler basit dahi olsa nasıl güvenli hale getirebileceğinizden bahsetmek istiyorum.Eğer dizgelerinizi daha güvenli hale getirmek isterseniz, dizgeleri md5 fonksiyonu ile birkaç sefer kodlayın veya bir kez kodladıktan sonra bir kez de farklı bir algoritma ile kodlayın.

1
2
3
4
5
6
7
8
<?php
$parola ='1234';
$sifre1 =md5($parola);
$sifre2 =md5($sifre1);
echo $sifre1.'<br>'; #81dc9bdb52d04dc20036dbd831ed055
echo $sifre2.'<br>'; #ec6a6536ca304edf844d1d2248a4f08dc
?>

Yukarıdaki örnekte $parola değişkenin yeüklenen 1234 değeri iki defa md5 fonksiyonu ile şifrelendiğinde güvenliği daha arttırdık.Unutmayın ki hiç bir şifrelenmiş dizge güvenlidir denilemez.Şifreleme yapılmasının sebebi; sadece güvenliği biraz daha arttırmak içindir.

1
2
3
4
5
6
7
8
9
10
<?php
$parola ='1234';
$sifre1 =crc32($parola);
$sifre2 =md5($sifre1);
$sifre3 =sha1($sifre2);
if(sha1(md5(crc32('1234')))==$sifre3) {
   echo 'Parola doğru';
    }
?>

Yukarıdaki örnekte ise $parola değişkenine atanan dizge 3 farklı şifreleme algoritması ile şifrelenmiştir.Burda şifreleme algoritmaları birbiriyle iç içe kullanılmıştır.

 

Alıntıdır, Teşekkürler Mustafa Erçel

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir