![]() |
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? |
hocam çözülmesinden yana sıkınıt yok ise base64 kullana bilirsin. |
Alıntı:
|
Alıntı:
http://php.net/manual/tr/function.mcrypt-decrypt.php Bunları kullanabilirsin. |
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. |
Alıntı:
|
php.ini dosyasında mcrypt kısmındaki yorum işaretini kaldırın |
Şö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. |
Alıntı:
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.