Php şifreleme yöntemlerini açıkça görünmesini istemediğimiz verilerimizi şifrelemek için kullanırız. Şifreleme yöntemleri gönderilen verileri belirli algoritmalara göre yeniden yapılandırarak bir dizge oluşturur.
openssl_encrypt Şifreleme Fonksiyonu
Belirtilen veriyi belirtilen yöntem ve parola ile şifrelemek için kullanılır. base64 kodlu bir dizge döndürür. openssl_encrypt şifrelenen veriler belirlenen parola ile tekrar geri döndürülür. Parolayı sadece şifrelemeyi yapan kişi bileceği için oldukça güvenlidir.
<?php $veri = '123456'; $sifreleme_yontemi = 'AES-128-ECB'; $anahtar = 'ornek_anahtar'; $sifrelenmis_hal = openssl_encrypt($veri, $sifreleme_yontemi, $anahtar); echo $sifrelenmis_hal; // wl+HWhSZSSNUXKGcCIjgIQ== ?>
Veriyi şifrelemek için openssl_encrypt fonksiyonunu kullanıyoruz. Şifrelediğimiz veriyi ise openssl_decrypt fonksiyonu ile çözümlüyoruz.
<?php $veri = 'wl+HWhSZSSNUXKGcCIjgIQ=='; // openssl_encrypt ile yukarıda şifrelediğimiz veri $sifreleme_yontemi = 'AES-128-ECB'; $anahtar = 'ornek_anahtar'; $cozumlenmis_hal = openssl_decrypt($veri, $sifreleme_yontemi, $anahtar); echo $cozumlenmis_hal; //123456 ?>
md5 Php Şifreleme Fonksiyonu
md5 şifreleme fonksiyonu 32 karakterlik 16 baytlık bir dizge döndürür. md5 fonksiyonu ile şifrelenen veri tekrar geri döndürülemez. Şifreleme algoritması oldukça iyi olsa bile basit şifreler kolayca çözülebilir. İnternette md5 ile şifrelenmiş verileri kırmak için kullanılan çözümleme siteleri mevcut fakat her veriyi çözümleyemiyorlar.
Örneğimizdeki birinci veri çevrimiçi md5 çözümleme siteleri tarafından rahatlıkla çözülecektir fakat ikinci verimizin çözümleme sitelerinin veri tabanında olma olasılığı oldukça düşük olduğu için çözümleme gerçekleşmeyecektir.
<?php $veri1 = "123456"; $veri2 = "eposta@mustafaazak.com"; echo md5($veri1) . "<br />"; echo md5($veri2); ?>
Projemizde sisteme kayıt olan kullanıcıların şifrelerini md5 yöntemi ile şifreleyerek veri tabanına kayıt ettiğimizi varsayalım. Veri tabanına şifrelenmiş olarak kayıt ettiğimiz veriyi kontrol ederken kullanıcıdan aldığımız veriyi tekrar şifreleyerek veri tabanındaki şifrelenmiş veri ile karşılaştırmamız gerekir.
<?php $veritabanindaki_sifrelemis_veri = "c33367701511b4f6020ec61ded352059"; // 654321' ifadesinin md5 ile şifrelenmiş şeklidir. $sifre = "654321"; if ($vt_sifre == md5($sifre)) { echo "Şifre doğru"; } else { echo "Şifre hatalı"; } ?>
sha1 Php Şifreme Fonksiyonu
sha1 şifreleme yöntemi tıpkı md5 gibi geri döndürülemeyen bir dizge oluşturur. sha1 algoritması 40 karakterlik ve 16 baytlık bir dizge oluşturur.
<?php $veritabanindaki_sifrelemis_veri = "dd5fef9c1c1da1394d6d34b248c51be2ad740840"; // 654321' ifadesinin sha1 ile şifrelenmiş şeklidir. $sifre = "654321"; if ($vt_sifre == sha1($sifre)) { echo "Şifre doğru"; } else { echo "Şifre hatalı"; } ?>
crc32 Php Şifreleme Fonksiyonu
crc32 fonksiyonu ile yapılan şifrelemelerde geri döndürülemeyen bir dizge oluşturur. Şifreleme sonucunu dizgenin durumuna göre negatif ya da pozitif tam sayı değeri döndürülür.
<?php $veritabanindaki_sifrelemis_veri = "4025094801"; // 654321' ifadesinin crc32 ile şifrelenmiş şeklidir. $sifre = "654321"; if ($vt_sifre == crc32($sifre)) { echo "Şifre doğru"; } else { echo "Şifre hatalı"; } ?>
base64 Php Şifreleme Fonksiyonu
base64 fonksiyonu diğer fonksiyonların aksine daha basit şifreleme sağlar ve base64 ile şifrelenen verilerin çözülmesi mümkün. base64 fonksiyonu ile veri şifrelemek için base64_encode fonksiyonunu, şifreyi çözmek için ise base64_decode fonksiyonunu kullanıyoruz.
<?php $sifre = "NjU0MzIx"; // "654321" verisinin base64_encode ile şifrelenmiş şekli. echo "Şifreli :" . base64_encode("654321"); echo "Çözülmüş :" . base64_decode($sifre); ?>
Tüm bu şifreleme fonksiyonlarının algoritmaları her ne kadar güvenli olsa da kırılabilmeleri mümkündür. Bu algoritmaların kırılmalarının önüne geçmek için birden fazla şifreleme fonksiyonunu aynı anda kullanabiliriz. Birden fazla şifreleme fonksiyonunu kullanarak daha karmaşık bir yapı oluşturabiliriz.
<?php /* $icice = crc32(sha1(md5($sifre))); fonksiyonların iç içe kullanımı */ $sifre = "654321"; $sifre_md = md5($sifre); $sifre_sha = sha1($sifre_md); $sifre_crc = crc32($sifre_sha); if (crc32(sha1(md5($sifre))) == $sifre_crc) { echo "Şifre doğru"; } else { echo "Şifre yanlış"; } ?>
Yukarıda anlaşılabilir olması için her fonksiyonu tek tek değişkene atayarak alt alta kullandım fakat içi içe kullanabilirsiniz. İç içe kullanım yaptığınızda karşılaştırma yapmak için fonksiyonların sırasına dikkat edin çünkü içe içe kullanım sırasında fonksiyonlar içten dışa doğru çalışmaktadır.
Php Şifreleme – Ion Cube Loader Nedir?
Ion Cube Loader ücretli bir şifreleme programıdır. Php projemizin dosyalarını (yani kodları) şifrelemek için kullanılabilir. Ion Cube ile dosyaları şifreledikten sonra sunucumuzda çalıştırmanın tek yolu Ion Cube kütüphanesinin kurulu olması gerekmektedir. Ion Cune ile şifrelediğimiz dosyalar yine Ion Cube ile çözümlenir.
Ion Cube ile şifreleme işlemi ücretlidir ancak çözme işleminden herhangi bir ücret alınmamaktadır.
Ion Cube kurmak için Ion Cube Loader sayfasından Loader Wizard.zip dosyasını indirin. İndirdiğimiz zip içindeki loader-wizard.php dosyanını sunucumuzun ana dizinine atıyoruz ve çalıştırıyoruz.
Dikkat : Eğer php sürümünüz 8 ve üzeri ise çalışmayacaktır.

Görseldeki adımları takip edelim.
Birinci maddedeki zip dosyalarını indiriyoruz ve C:\wamp64\bin\php\php7.2.10\ext dizinine atıyoruz. Buraya dikkat sizin php sürümünüze uygun dizine atın.
Daha sonra C:\wamp64\bin\php\php7.2.10\phpForApache.ini dosyasını düzenleme modunda açalım. zend_extension = “c:/wamp64/bin/php/php7.2.10/ext/\ioncube_loader_win_7.2.dll” ion cube dosyamızın yolunu belirtelim ve kaydedelim. İlk satıra kopyalayıp yapıştırmanız yeterlidir.
Bu adımları gerçekleştirdikten sonra Apache’yi yeniden başlatıyoruz ve 5. adımdaki kontrol linkinden kurulumun başarılı olup olmadığını kontrol ediyoruz.
