R10.net

R10.net (https://www.r10.net/index.php)
-   PHP (https://www.r10.net/php/)
-   -   Php Şifreleme Fonksiyonu (https://www.r10.net/php/1600626-php-sifreleme-fonksiyonu.html)

Karaman 12-05-2016 22:12:39

Php Şifreleme Fonksiyonu
 
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?

Minimalite 12-05-2016 22:44:34

hocam çözülmesinden yana sıkınıt yok ise base64 kullana bilirsin.

Karaman 12-05-2016 23:36:01

Alıntı:

Minimalite Nickli Üyeden Alıntı (Mesaj 1071611870)
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.

emerald 13-05-2016 14:41:04

Alıntı:

Karaman Nickli Üyeden Alıntı (Mesaj 1071611994)
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.

SmlCoder 14-05-2016 20:27:28

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.

Karaman 14-05-2016 23:18:39

Alıntı:

SmlCoder Nickli Üyeden Alıntı (Mesaj 1071615561)
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.

Sable 14-05-2016 23:40:08

php.ini dosyasında mcrypt kısmındaki yorum işaretini kaldırın

Cycl0ne 15-05-2016 03:49:33

Şö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.

sawashan 15-05-2016 15:39:15

Alıntı:

Karaman Nickli Üyeden Alıntı (Mesaj 1071611798)
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 :D

Kendimce şöyle birşey yapmıştım. İşinize yarar belki :D $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 :D


Çıktı:

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


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 14:09:01.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.