Mcrypt ile Şifreleme Sınıfı

<?php
header('Content-Type: text/html; charset=iso-8859-9');
class SifreleCoz {
	var $anahtar;
	var $veri;
	var $td;
	var $iv;
	var $bas = false;
	function SifreleCoz($anahtar='',$veri=''){
		if ($anahtar != ''){
			$this->bas($anahtar);			
		}
		$this->veri = $veri;
	}
	function bas(&$anahtar){
		$this->td = mcrypt_module_open ('des', '', 'ecb', ''); 
		$this->anahtar = substr ($anahtar, 0, mcrypt_enc_get_key_size($this->td)); 
		$iv_boyut = mcrypt_enc_get_iv_size($this->td); 
		$this->iv = mcrypt_create_iv($iv_boyut, MCRYPT_RAND);
		$this->bas = true;
	}
	function anahtarAyarla($anahtar){
		$this->bas($anahtar);
	}
	function veriAyarla($veri){
		$this->veri = $veri;
	}
	function &anahtarGetir(){
		return $this->anahtar;
	}
	function &veriGetir(){
		return $this->veri;
	}
	function &sifrele($veri=''){
		return $this->_sifre('sifrele',$veri);
	}
	function &coz($veri=''){
		return $this->_sifre('coz',$veri);
	}
	function kapat(){
		mcrypt_module_close($this->td); 
	}
	function &_sifre($mode,&$veri){
		if ($veri != ''){
			$this->veri = $veri;
		}
		if ($this->bas){
			if (mcrypt_generic_init($this->td,$this->anahtar,$this->iv) != -1){ 
				if ($mode == 'sifrele'){
					$this->veri = mcrypt_generic($this->td, $this->veri); 
				}elseif($mode == 'coz'){
					$this->veri = mdecrypt_generic($this->td, $this->veri); 
				}
				mcrypt_generic_deinit($this->td);
				return $this->veri;
			}else{
				trigger_error('Error basialising '.$mode.'ion handle',E_USER_ERROR);
			}
		}else{
			trigger_error('Key not set. Use anahtarAyarla() method',E_USER_ERROR);
		}
	}
}
$sc = new SifreleCoz('gizli anahtar');
$kullanici = 'kullanici';
$sifre = 'sifre';
$s_kullanici = $sc->sifrele($kullanici);
$s_sifre = $sc->sifrele($sifre);
echo 'sifreli kullanici: '.$s_kullanici;
echo '<br>';
echo 'sifreli sifre: '.$s_sifre;
echo '<br>';
echo 'sifresiz kullanici: '.$sc->coz($s_kullanici);
echo '<br>';
echo 'sifresiz sifre: '.$sc->coz($s_sifre);
echo '<br>';
$sc->kapat();
?>

Çıktısı

sifreli kullanici: £ÈÄN/©„İ­ÂÒñ£
sifreli sifre: rtï§ğ
sifresiz kullanici: kullanici
sifresiz sifre: sifre

 

Şifreleyici Sınıfı

<?php
class Sifreleyici{
	private $_anahtar;
	public function __construct($anahtar = '', $md5 = true){
		$anahtar = str_split($md5 ? md5($anahtar) : sha1($anahtar), 1);
		$sinyal = false;
		$toplam = 0;
		foreach($anahtar as $karakter){
			if($sinyal){
				$toplam -= ord($karakter);
				$sinyal = false;
			}else{
				$toplam += ord($karakter);
				$sinyal = true;
			}
		}
		$this->_anahtar = abs($toplam);
	}
	public function sifrele($metin){
		$metin = str_split($metin, 1);
		$sonuc = '';
		foreach($metin as $karakter){
			$sonuc .= sprintf("%03x", ord($karakter) + $this->_anahtar);
		}
		return $sonuc;
	}
	public function coz($metin){
		$sonuc = '';
		$metin = str_split($metin, 3);
		foreach($metin as $karakter){
			$sonuc .= chr(hexdec($karakter) - $this->_anahtar);
		}
		return $sonuc;
	}
}
$anahtar = "asd";
$metin = "MerhabaDünya";
$s = new Sifreleyici($anahtar);
echo $es = $s->sifrele($metin);
echo "<br>";
echo $des = $s->coz($es);
?>

Çıktısı

 

Zamana ve Anahtara Göre Değişken Şifreleme Sınıfı

<?php
class Sifreleyici{
	var $anahtar;
	function Sifreleyici($anahtar){
		$this->anahtar = $anahtar;
		}
	function anahtardegistir($anahtar){
		$this->anahtar = $anahtar;
	}
	function anahtarED($metin) { 
		$sifrele_anahtar = md5($this->anahtar); 
		$ctr=0; 
		$topla = ""; 
		for ($i=0;$i<strlen($metin);$i++) { 
			if ($ctr==strlen($sifrele_anahtar)) $ctr=0; 
			$topla.= substr($metin,$i,1) ^ substr($sifrele_anahtar,$ctr,1); 
			$ctr++; 
		} 
		return $topla; 
	} 
	function sifrele($metin){ 
		srand((double)microtime()*1000000); 
		$sifrele_anahtar = md5(rand(0,32000)); 
		$ctr=0; 
		$topla = ""; 
		for ($i=0;$i<strlen($metin);$i++){ 
			if ($ctr==strlen($sifrele_anahtar)) $ctr=0; 
			$topla.= substr($sifrele_anahtar,$ctr,1) . 
			(substr($metin,$i,1) ^ substr($sifrele_anahtar,$ctr,1)); 
			$ctr++; 
		} 
		return base64_encode($this->anahtarED($topla)); 
	} 
	function coz($metin) { 
		$metin = $this->anahtarED(base64_decode($metin)); 
		$topla = ""; 
		for ($i=0;$i<strlen($metin);$i++){ 
			$md5 = substr($metin,$i,1); 
			$i++; 
			$topla.= (substr($metin,$i,1) ^ $md5); 
		} 
		return $topla; 
	} 
}
$c=new Sifreleyici("asd");
echo $c->sifrele("12345678");
echo $c->coz("VGoJPwM/B2ACNl8+BWhSOQ==");
?>

Çıktısı

VGoJPwM/B2ACNl8+BWhSOQ==
12345678

 

Rastgele Şifre Oluşturma,Tuzlu Şifreleme ve Doğrulama

<?php
class Sifre {
	var $tuz;
  function sifrele($sifre, $tuz = '') {
		$this->tuz=$tuz;
    $buyu = '$1$';
    $karakterler = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    if (strlen($this->tuz) < 8) {
      mt_srand ((double) microtime() * 1000000);
      for ($i = 8; $i > strlen($this->tuz);) {
        $this->tuz .= $karakterler{mt_rand (0, strlen($karakterler)-1)};
      }
    }
    $passwd = crypt($sifre, $buyu . $this->tuz);
    return($passwd);
  }
  function kontrol($sifre, $sifreli) {
    $test = $this->sifrele($sifre, substr($sifreli, 3, 8));
    if ($test == $sifreli) {
      return(true);
    }else{
      return(false);
    }
  }
  function rastgeleSifreUret() {
    $karakterler = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
    $this->tuz=mt_srand ((double) microtime() * 1000000);
    for ($i = 8; $i > strlen($this->tuz);) {
      $this->tuz .= $karakterler{mt_rand (0, strlen($karakterler)-1)};
    }
    return($this->tuz);
  }
}
$p = new Sifre;
echo $rastgele= $p->rastgeleSifreUret();
echo "<br>";
echo $sifreli = $p->sifrele($rastgele,$tuz=rand(1,2));
echo "<br>";
if ($p->kontrol($rastgele,$sifreli)) {
echo "Doğru Şifre";
}else{
echo "Hatalı Şifre";
}
?>

Çıktısı

h95Pjaec
$1$1xuDtzzC$VcOdiz8wCJRBZgdHhYjWt1
Doğru Şifre

 

Şifreleri Şifrelemek ve Çözmek

<?php
class Sifre{
   var $k;
   function Sifre($m){
      $this->k = $m;
   }
   function ed($t) { 
      $r = md5($this->k); 
      $c=0; 
      $v = ""; 
      for ($i=0;$i<strlen($t);$i++) { 
         if ($c==strlen($r)) $c=0; 
         $v.= substr($t,$i,1) ^ substr($r,$c,1); 
         $c++; 
      } 
      return $v; 
   } 
   function sifrele($t){ 
      srand((double)microtime()*1000000); 
      $r = md5(rand(0,32000)); 
      $c=0; 
      $v = ""; 
      for ($i=0;$i<strlen($t);$i++){ 
         if ($c==strlen($r)) $c=0; 
         $v.= substr($r,$c,1) . 
             (substr($t,$i,1) ^ substr($r,$c,1)); 
         $c++; 
      } 
      return base64_encode($this->ed($v)); 
   } 
   function coz($t) { 
      $t = $this->ed(base64_decode($t)); 
      $v = ""; 
      for ($i=0;$i<strlen($t);$i++){ 
         $md5 = substr($t,$i,1); 
         $i++; 
         $v.= (substr($t,$i,1) ^ $md5); 
      } 
      return $v; 
   } 
}
$sifre = "123456";
$cr64 = new Sifre($sifre);
$e = $cr64->sifrele($sifre);
echo "Şifreli = ".$e."<br>";
$d = $cr64->coz($e);
echo "Çözülmüş = ".$d."<br>";
?>

Çıktısı

Şifreli = UzYGZVBkAT8AOFBl
Çözülmüş = 123456

 

Çerezleri Şifreleyerek Saklamak

<?php
class cerezSifreleme {
	var $anahtarim; 
	var $cerezim; 
	var $degerim; 
	var $cerezdizi;
	var $cerez;
	function cerezSifreleme($anahtar = 123) {
		$this->anahtarim=$anahtar;
		$this->cerezdizi = array();
		$this->cerez= "";
		$this->cerezim="";
		$this->degerim="";
	}
	function cerezSifrele() {
		$degersifrele = base64_encode($this->degerim);
		for ($f=0; $f<=strlen($degersifrele)-1; $f++) {
			$this->cerez .= intval(ord($degersifrele[$f]))*$this->anahtarim."|";    
		}
		setcookie($this->cerezim,$this->cerez);
	}
	function cerezCoz(){
		$this->cerezdizi = explode("|",$_COOKIE["$this->cerezim"]);
		$this->degerim = ""; 
			for ($f=0; $f<=count($this->cerezdizi)-2; $f++) {
			$this->degerim .= strval(chr($this->cerezdizi[$f]/$this->anahtarim));
		}
		return(base64_decode($this->degerim)); 	   
	}
	function cerezSec($cerez, $deger){
		$this->cerezim = $cerez;
		$this->degerim = $deger;
		$this->cerezSifrele();
	}
	function cerezAl($cerez) {
		$this->cerezim = $cerez;
		return $this->cerezCoz();
	}
}
$veri=new cerezSifreleme(32421);
$veri->cerezSec("cerez","Merhaba");
echo "<b>".$veri->cerezAl("cerez")."</b> verisini <br><b>".$veri->cerez."</b> olarak depoluyorum.";
?>

Çıktısı

Merhaba verisini 
3656688|3787284|3743752|5267372|4222604|3090772|3047240|4570860|3874348|3526092|2655452|2655452| olarak depoluyorum.