PHP'de veri şifreleme tekrar dönüştürülebilir ve dönüştürülemez olarak iki yol üzerinde izlenir. Daha anlaşılır şekilde söylemek gerekirse bir veriyi şifrelerken yöntemine göre kimi zaman şifresini çözebiliriz kimi zaman bu mümkün değildir.
PHP tabanlı projelerimizde en önemli noktalardan biri güvenliktir. Bazı verileri veri tabanına kaydetmeden önce şifreleme gereksinimi duyarız. Amacımız, bizler için önem taşıyan verilerin kötü amaçlı kişiler tarafından kullanılmasının önüne geçmektir. PHP'de veri şifreleme tekrar dönüştürülebilir ve dönüştürülemez olarak iki yol üzerinde izlenir. Daha anlaşılır şekilde söylemek gerekirse bir veriyi şifrelerken yöntemine göre kimi zaman şifresini çözebiliriz kimi zaman bu mümkün değildir. Bazı şifreleme yöntemleri tek yönlü olarak işletilmektedir, şifrelenen veriyi biz dahil kimse eski haline getiremez. Vakit kaybetmeden dönüştürülebilir ve dönüştürülemez şifreleme yöntemlerinden BASE64, MD5, SHA1 ve CRC32 fonksiyonlarını tanıyalım.
BASE64
Bu fonksiyonu kullanarak şifrelediğiniz veri, şifrelenmemiş haline göre %30 daha fazla yer kaplayacaktır. Bir veriyi şifrelerken base64_encode, geri dönüştürmek için base64_decode fonksiyonunu kullanırız. Örnek üzerinde görmek gerekirse:<?php $x = 123456; $sifreli_veri = base64_encode($x); // çıktısı: MTIzNDU2 $orjinal_veri = base64_decode($sifreli_veri); // çıktısı: 123456 ?>Sizin de fark ettiğiniz gibi 6 haneli bir veriyi şifreledik ve şifreli verimiz 8 hane oldu.
MD5
Bu fonksiyon tek yönlü şifreleme fonksiyonlarındandır. Bu metodu kullanarak şifreleme yaptığınızda şifrelenen veriyi eski haline getiremezsiniz. MD5 fonksiyonu 16lık bir karakter dizgesini 32lik bir karakter dizgesine dönüştürür. Yine bir örnek üzerinde fonksiyonumuzu görelim.<?php $x = 123456; echo md5($x); // çıktısı: e10adc3949ba59abbe56e057f20f883e ?>
SHA1
Bu fonksiyon da tek yönlü şifreleme fonksiyonlarından biridir. Bu metodu kullanarak şifreleme yaptığınızda şifrelenen veriyi eski haline getiremezsiniz. SHA1 fonksiyonu 16lık bir karakter dizgesini 40lık bir karakter dizgesine dönüştürür. Bir de SHA1 şifrelemesi yapalım.<?php $x = 123456; echo sha1($x); // çıktısı: 7c4a8d09ca3762af61e59520943dc26494f8941b ?>
CRC32
Bu fonksiyon da tek yönlü şifreleme fonksiyonlarından olup yapılan şifrelemede şifrelenecek veriyi negatif ya da pozitif bir tam sayı değerine dönüştürür. Şimdi de bir örnek üzerinde CRC32 şifrelemesi görelim.<?php $x = 123456; echo crc32($x); // çıktısı: 158520161 ?>Bu fonksiyonların bir kaçını birlikte kullanabilir veya bir kaç kez peş peşe şifreleme yapabilirsiniz. Bir sonraki yazımda farklı şifreleme algoritmalarını göreceğiz. Takipte kalın, görüşmek üzere.