Dijital Ürün Alış ve Satışı için: Buraya Tıkla

PHP ile Verileri Şifreleme Sistemi

Bazen bazı durumlarda herkese açık olan bir bilgiyi gizlemek isteyebilirsiniz. En azından şifreli olarak görünmesini ve sizden başkasının buna sahip olmamasını istersiniz.

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.

Geçerli Şifreleme Algoritmaları

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 :)

openssl_encrypt()ile Şifrelemek

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.

openssl_decrypt()ile Şifreyi Çözmek

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. 

$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


henüz yorum yok
Tema Ayarları

Kendi özelleştirilmiş stilini belirle

Mod Seç

Uygulamanız için mükemmel renk modunu seçin.


RTL Mode

Dil yönünüzü değiştirin


Fluid Layout

Tam ekran modu aç/kapat


Navigasyon Konumu

Web sitesi için uygun bir menü sistemi seçin


Görünüm