Şifreleme Kütüphanesi, CodeIgniter`da kullandığımız bazı değişkenlere ait değerleri şifrelemek ve bunları tekrar gerçek değerine getirmek üzere 64 bit şifreleme sistemini verdiğimiz bir anahtar kelimeyi de kullanarak sağlayan bir kütüphanedir.
Kütüphaneyi yazmaktaki amaçlarım:
- formlara gönderdiğimiz gizli değişkenlerin kullanıcılar tarafından kaynak kodların görüntülenmesi ile öğrenilmemesi,
- proje dizinleri altına kaydettiğimiz dosyaların (fotoğraf, video, zip vs.) isimlerinin elde edilmemesi,
- url satırından aktarılacak değişkenlerde hata veren işaretlerin (bölü, ters bölü, soru işareti vs) taşınması
Kütüphane kodunu inceleyelim. Kütüphanemizin adı Crypt. PHP 5 ve üzeri versiyonlar için kullanılır. Dosyamızın yeri application/libraries dizini altındadır. Dosya ismi crypt.php dir.
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
* Crypt
* Encryption and Decryption library
*
*
* Features:
* + To encrypt and decrypt words with encryption keys
*
* Requirements:
* PHP 5.0+
*
* Usage:
*
* In your controller:
* $this->load->library('crypt');
*
* Syntax
* $this->crypt->set_key(); : to set encryption key
* $this->crypt->encrypt($plain_word) : to encrypt data
* $this->crypt->decrypt($encrypted_word) : to decrypt data
*
* @package CodeIgniter
* @subpackage Libraries
* @category Encryption and decryption
* @author Fatih Bazman : fatihbazman at gmail.com
* @version 1.0
* @license http://creativecommons.org/licenses/by-sa/3.0/us/
*/
class Crypt
{
private $cKey;
private $CI;
function __construct()
{
$this->CI =& get_instance();
log_message('debug', 'Crypt library was initialized.');
}
function set_key($encryption_key=NULL)
{
if(isset($encryption_key)) $this->cKey = $encryption_key;
else $this->cKey = $this->CI->config->item('encryption_key');
}
function encrypt($cData)
{
$cResult = '';
for($i = 0; $i < strlen($cData); $i ++)
{
$cChar = substr($cData, $i, 1);
$cKeyChar = substr($this->cKey, ($i % strlen($this->cKey)) - 1, 1);
$cChar = chr(ord($cChar) + ord($cKeyChar));
$cResult .= $cChar;
}
return $this->encode_base64($cResult);
}
function decrypt($cData)
{
$cResult = '';
$cData = $this->decode_base64($cData);
for($i = 0; $i < strlen($cData); $i ++)
{
$cChar = substr($cData, $i, 1);
$cKeyChar = substr($this->cKey, ($i % strlen($this->cKey)) - 1, 1);
$cChar = chr(ord($cChar) - ord($cKeyChar));
$cResult .= $cChar;
}
return $cResult;
}
private function encode_base64($cData)
{
$cBase64 = base64_encode($cData);
return strtr($cBase64, '+/', '-_');
}
private function decode_base64($cData)
{
$cBase64 = strtr($cData, '-_', '+/');
return base64_decode($cBase64);
}
}
set_key fonksiyonu: şifreleme sırasında kullanacağımız kelimemizi tanımladığımız fonksiyondur. Eğer set_key fonksiyonu ile encryption_key değeri tanımlanmazsa application/config/config.php dosyasında $config['encryption_key'] değişkeninde tanımlı değeri kullanır. Bu fonksiyon ile istenirse farklı anahtarlar kullanılarak, her durum için farklı şifreleme metodu kullanılabilir.
encrypt fonksiyonu: şifrelenmesini istediğimiz kelimeyi (değeri) girdiğimiz fonksiyondur. Geri dönüşünde oluşturduğu şifrelenmiş kelimeyi verir.
decrypt fonksiyonu: şifrelenmiş kelimeyi (değeri) girdiğimiz fonksiyondur. Geri dönüşünde şifrelenmemiş kelimeyi verir.
Kullanımı için örnek bir controller dosyası inceleyelim. Bu dosyamızın yeri application/controllers dizini altındadır. Dosya adı Form.php dir.
class Form extends Controller {
function Form()
{
parent::Controller();
$this->load->library('crypt');
}
function index()
{
$this->crypt->set_key("hello world how are you");
$data['word'] = "great_walley_picture.jpg";
$data['encrypted'] = $this->crypt->encrypt($data['word']);
$data['decrypted'] = $this->crypt->decrypt($data['encrypted']);
$this->load->view('form_view',$data);
}
}
Form controller dosyasında Form metodunda kütüphanemizi yüklüyoruz. Index metodunda ise önce şifreleme kelimemizi "hello world how are you" olarak tanımlıyoruz. Bu tamamen size bağlı bir kelime, cümle olabilir. Şifrelenmesini istediğimiz dosya ismimizi "great_walley_picture.jpg" tanımlıyor, kütüphanemize şifrelemek için $this->crypt->encrypt fonksiyonunu kullanıyoruz. Şifreyi çözmek için ise $this->crypt->decrypt fonksiyonunu çalıştırıyoruz.
Şimdi de örnek view dosyamıza bakalım. Bu dosyamızın yeri application/views dizini altındadır. Dosya adı Form_view.php dir. Bu dosyamızda da controller dosyamızda aldığımız değişkenleri ekrana bastırıyoruz.
Cryption results
<p>word : <?=$word?$gt;</p> <p>encrypt : <?=$encrypted?></p> <p>decrypt : <?=$decrypted?></p>
Bu yazıda anlatılan dosyalara bu adresteki application dizini aracılığıyla ulaşabilir, CodeIgniter yükledikten sonra gerekli ayarların yapılmasının ardından kullanabilirsiniz.
Yazarı : Fatih BAZMAN | Yorum Ekle | Etiketler : Şifreleme Uygulama kütüphane
Türkiye