01-12-2023 09:58
12-07-2023 16:35
16-03-2023 17:13
26-07-2023 13:25
Bunu php'de openssl fonksiyonları ile yapmak mümkün. Belli bir şifreleme algoritmasına göre, sizin belirlediğiniz bir anahtar değer ile verinizi encode edebilir ve istediğiniz zaman aynı anahtar değeri kullanarak decode edip bilgiye tekrar ulaşabilirsiniz.
Bunu genelde form'da gönderdiğiniz id değerini gizlemek için kullanabilirsiniz, ya da örneğin bir video token değeriniz vardır, bu token nihayetinde belli bir süre geçerli bir linke gitmek için kullanılıyordur. Token'ı bilen herkes bu bağlantıyı oluşturabilir, ancak token'ı şifrelerseniz neticede sadece sizin geçici süreliğine oluşturduğunuz bağlantıyı kullanmak zorunda kalacaklardır.
Mevcut şifreleme algoritmalarını öğrenmek için şu fonksiyonu print_r() ile bastırıp bakabilirsiniz.
print_r(openssl_get_cipher_methods());
Buradaki herhangi bir şifreleme algoritmasını kullanabilirsiniz. Elbette bu algoritmalarında kendilerine göre farklılıkları olabilir ancak bu beni biraz aşan bir konu, çok merak eden AES ve benzeri sistemleri inceleyerek anlamaya çalışabilir. Biz konunun özüne odaklanalım :)
Fonksiyon temelde üç değer alıyor. İlk olarak şifrelemek istediğiniz data, ikinci olarak şifreleme algoritmanız, üçüncü olarak şifreleme için kullanacağınız anahtar değer.
Örneğin sed.2023.xx1 anahtar değeri ile AES-128-ECB algoritmasını kullanarak seditio.com.tr değerini şifreleyelim.
$data = 'seditio.com.tr'; $cipher = 'AES-128-ECB'; $key = 'sed.2023.xx1'; $encoded = openssl_encrypt($data, $cipher, $key); // çıktı: IJ+QoM3fGYV9u6RByX1MQS==
Evet artık elimizde seditio.com.tr yerine herkese açık bir değer olan IJ+QoM3fGYV9u6RByX1MQS== var. Ancak bu değer, belirlenen anahtar değer olmadan hiçbir anlam ifade etmiyor.
Elimizde şifrelenmiş bir veri var, anahtar değeri biliyoruz, artık onu çözme vakti. Bu genelde veriyi gönderdiğiniz yerde şifreyi çözerek değeri kontrol etme işlemidir.
Yine şifreleme işlemi gibi, şifre çözmek içinde şifreli veri, şifreleme algoritması ve anahtar değere ihtiyacımız var.
$data = 'IJ+QoM3fGYV9u6RByX1MQS=='; $cipher = 'AES-128-ECB'; $key = 'sed.2023.xx1'; $decoded = openssl_decrypt($data, $cipher, $key); // çıktı: seditio.com.tr
Şimdi olası bir senaryo düşünelim, diyelim ki birisi veriyi doğrudan normal bir değer olarak gönderdi. Bu decode işleminden geçtiğinde nasıl bir sonuç elde ederiz bakalım.
$data = 'seditio.com.tr'; // verinin şifrelenmemiş birebir aynı halini gönderdik $cipher = 'AES-128-ECB'; $key = 'sed.2023.xx1'; $decoded = openssl_decrypt($data, $cipher, $key); var_dump($decoded);
verinin şifrelenmemiş birebir orjinal halini göndermemize rağmen, bizim belirlediğimiz şifreleme algoritması ve anahtar değer ile şifreyi çözemediğimiz için false değeri dönüyor. Bu da kontrol için false olup olmadığına bakmak yeterli demektir.
false
$data = 'IJ+QoM3fGYV9u6RByX1MQS=='; $cipher = 'AES-128-ECB'; $key = 'sed.2023.xx1'; $decoded = openssl_decrypt($data, $cipher, $key); if (!$decoded){ echo "Hatalı bir değer gönderdiniz"; exit; } // sorun yoksa işlem buradan devam eder
Kaynak: https://prototurk.com/makaleler/php-ile-verileri-sifrelemek#php-ile-verileri-sifrelemek
Kendi özelleştirilmiş stilini belirle
Uygulamanız için mükemmel renk modunu seçin.
Dil yönünüzü değiştirin
Tam ekran modu aç/kapat
Web sitesi için uygun bir menü sistemi seçin
Please enable JavaScript!Bitte aktiviere JavaScript!S'il vous plaît activer JavaScript!Por favor,activa el JavaScript!