• 12-05-2016, 22:12:39
    #1
    http://localhost/veriguncelle&id=46d...c6db7b1b4a5015

    bir linke tıklandığında href'i yukarıdaki gibi olacak. Orada id, direk id değeri değil de yukarıdaki gibi şifrelenmiş olarak gönderilecek.

    veriguncelle sayfasında da get ile id değerini alacağım ve bu sayfada gerçek id değerine dönüştürüp kullanacağım.

    md5, sha1 gibi şifreleme yöntemlerini kullandım fakat onların encode,decode özelliği yokmuş. Bu sorunumu nasıl çözebilirim?
  • 12-05-2016, 22:44:34
    #2
    hocam çözülmesinden yana sıkınıt yok ise base64 kullana bilirsin.
  • 12-05-2016, 23:36:01
    #3
    Minimalite adlı üyeden alıntı: mesajı görüntüle
    hocam çözülmesinden yana sıkınıt yok ise base64 kullana bilirsin.
    aslında md5(sha1(md5 böyle iç içe yapıp tersinde ilk değere ulaşmayı planlıyordum ama tersine izin vermiyormuş. base64 ten başka tersine çevrilabilen tür varsa iç içe onları da kullanabilirim.
  • 13-05-2016, 14:41:04
    #4
    Karaman adlı üyeden alıntı: mesajı görüntüle
    aslında md5(sha1(md5 böyle iç içe yapıp tersinde ilk değere ulaşmayı planlıyordum ama tersine izin vermiyormuş. base64 ten başka tersine çevrilabilen tür varsa iç içe onları da kullanabilirim.
    http://php.net/manual/tr/function.mcrypt-encrypt.php

    http://php.net/manual/tr/function.mcrypt-decrypt.php

    Bunları kullanabilirsin.
  • 14-05-2016, 20:27:28
    #5
    class Encryption {
        
    		var $skey     = "aAaA";
    		
    		public  function safe_b64encode($string) {
    		
    			$data = base64_encode($string);
    			$data = str_replace(array('+','/','='),array('-','_',''),$data);
    			return $data;
    		}
    	 
    		public function safe_b64decode($string) {
    			$data = str_replace(array('-','_'),array('+','/'),$string);
    			$mod4 = strlen($data) % 4;
    			if ($mod4) {
    				$data .= substr('====', $mod4);
    			}
    			return base64_decode($data);
    		}
    		
    		public  function encode($value){ 
    			
    			if(!$value){return false;}
    			$text = $value;
    			$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    			$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    			$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv);
    			return trim($this->safe_b64encode($crypttext)); 
    		}
    		
    		public function decode($value){
    			
    			if(!$value){return false;}
    			$crypttext = $this->safe_b64decode($value); 
    			$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    			$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    			$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv);
    			return trim($decrypttext);
    		}
    	}
    	
    	$sifrele  = new Encryption;
    Şifreleme
    $sifrele->encode('veri');
    Şifreyi Çözme
    $sifrele->decode('veri');
    Youtube un url mantığı ile hemen hemen aynıdır.
  • 14-05-2016, 23:18:39
    #6
    SmlCoder adlı üyeden alıntı: mesajı görüntüle
    class Encryption {
        
    		var $skey     = "aAaA";
    		
    		public  function safe_b64encode($string) {
    		
    			$data = base64_encode($string);
    			$data = str_replace(array('+','/','='),array('-','_',''),$data);
    			return $data;
    		}
    	 
    		public function safe_b64decode($string) {
    			$data = str_replace(array('-','_'),array('+','/'),$string);
    			$mod4 = strlen($data) % 4;
    			if ($mod4) {
    				$data .= substr('====', $mod4);
    			}
    			return base64_decode($data);
    		}
    		
    		public  function encode($value){ 
    			
    			if(!$value){return false;}
    			$text = $value;
    			$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    			$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    			$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->skey, $text, MCRYPT_MODE_ECB, $iv);
    			return trim($this->safe_b64encode($crypttext)); 
    		}
    		
    		public function decode($value){
    			
    			if(!$value){return false;}
    			$crypttext = $this->safe_b64decode($value); 
    			$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
    			$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
    			$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->skey, $crypttext, MCRYPT_MODE_ECB, $iv);
    			return trim($decrypttext);
    		}
    	}
    	
    	$sifrele  = new Encryption;
    Şifreleme
    $sifrele->encode('veri');
    Şifreyi Çözme
    $sifrele->decode('veri');
    Youtube un url mantığı ile hemen hemen aynıdır.
    Cevabınız için teşekkürler. Fakat Fatal error: Call to undefined function mcrypt_get_iv_size() in C:\AppServ\www\a\b.php on line 25 hatası veriyor.
  • 14-05-2016, 23:40:08
    #7
    php.ini dosyasında mcrypt kısmındaki yorum işaretini kaldırın
  • 15-05-2016, 03:49:33
    #8
    Şöyle yapabilirsiniz sanıyorum.

    Tablonuzda bir sütun daha açın, sifreli_id olsun adı. Sonra yönetim panelinizde ekleme kısmına şöyle bir şey ekleyin;

    $sifreli_id = uniqid();

    Bu değişkeni ilgili sütuna yazdırın. Eski kayıtlar için ise basit listeleme sorgusunu kullanarak her şifreli id boş olan sütunu bu şekilde doldurun.
  • 15-05-2016, 15:39:15
    #9
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Karaman adlı üyeden alıntı: mesajı görüntüle
    http://localhost/veriguncelle&id=46d...c6db7b1b4a5015

    bir linke tıklandığında href'i yukarıdaki gibi olacak. Orada id, direk id değeri değil de yukarıdaki gibi şifrelenmiş olarak gönderilecek.

    veriguncelle sayfasında da get ile id değerini alacağım ve bu sayfada gerçek id değerine dönüştürüp kullanacağım.

    md5, sha1 gibi şifreleme yöntemlerini kullandım fakat onların encode,decode özelliği yokmuş. Bu sorunumu nasıl çözebilirim?
    <?php
    class SifCoz {
    	var $Bytes = array(54,32,87,65,98,45,16,94,6,9,8,47,81,62,57,69,37,84,24,18,67,43,12,45,06,13,9,12,36,28,31,42,44,55,11,22,33,66,77);
    	var $Key   = "sa4'&''!^(%+sd54)&'43";
    	
    	function Sifrele($veri) {
    		$veri = base64_encode($this->Key."©".$veri);
    		$bSay = count($this->Bytes)-1;
    		$rNum = rand(0,$bSay);
    		$byte = $this->Bytes[$rNum];
    		for($i=0;$i<=strlen($veri)-1;$i++) {
    			@$reveri.= hex2bin(dechex(hexdec(bin2hex($veri[$i]))+$byte));
    		}
    		return base64_encode($reveri."$.$".$rNum);
    	}
    	
    	function Coz($veri) {
    		$veri = base64_decode($veri);
    		$DecS = explode('$.$',$veri);
    		$veri = $DecS[0];
    		$byte = $this->Bytes[$DecS[1]];
    		for($i=0;$i<=strlen($veri)-1;$i++) {
    			@$reveri.= hex2bin(dechex(hexdec(bin2hex($veri[$i]))-$byte));
    		}
    		$reveri = base64_decode($reveri);
    		$reveri = explode("©",$reveri);
    		return $reveri[1];
    	}
    }
    
    $sifcoz = new SifCoz;
    
    $yazi = "R10.net türkiye'nin webmaster forumu.";
    
    $sifrelenmis = $sifcoz->Sifrele($yazi);
    
    $cozulmus = $sifcoz->Coz($sifrelenmis);
    
    echo $sifrelenmis."<br>".$cozulmus;
    ?>
    Edit:böylesi daha iyi gibi

    Kendimce şöyle birşey yapmıştım. İşinize yarar belki $key değişkenindeki değerleri 10 20 haneli rastgele harf sayı ile değiştirin hocam. Key ne kadar uzun olursa şifrelenmiş veride o kadar uzun ve güçlü olur


    Çıktı:

    azpNOFKBYXZSgU5tU0tdems6WTlWS3N1UoJZgn95dFtVXEl9an VeOFFQXEx+UFJ6aWB0dFI6PXhqcUo7Yl9SfGFgVjhiYFFvYnVB gWxfOTlUb0VFJC4kMTA=
    R10.net türkiye'nin webmaster forumu.