v2.5.1
Giri┼č yap

PHP ile Verileri ┼×ifrelemek

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.

Bir ba┼čka ├Ârnekte protot├╝rk ├╝zerinden vereyim. ├ľrne─čin kullan─▒c─▒lar─▒n birbirlerini takip etme ├Âzellikleri var, bunu k─▒saca follow() fonksiyonuna kullan─▒c─▒ id'sini g├Ândererek arkaplanda kontrol i┼člemlerini yap─▒yorum, ancak burada g├Âsterece─čim y├Ântem ile id'yi ┼čifreledi─čim i├žin birinin console'u a├ž─▒p for d├Âng├╝s├╝ ile 1'den 1000'e kadar say─▒ ├╝reterek bu takip i┼člemini otomatize etmesini engellemi┼č oldum, ├ž├╝nk├╝ id'ler benim belirledi─čim anahtar de─čer ile ┼čifrelendi─či i├žin isteselerde b├Âyle bir ┼čey m├╝mk├╝n de─čil. ─░steyen tek tek takip etmekte ├Âzg├╝r :D

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 prototurk.2021.xx1 anahtar de─čeri ile AES-128-ECB algoritmas─▒n─▒ kullanarak prototurk.com de─čerini ┼čifreleyelim.

$data = 'prototurk.com';
$cipher = 'AES-128-ECB';
$key = 'prototurk.2021.xx1';
$encoded = openssl_encrypt($data, $cipher, $key); // ├ž─▒kt─▒: IJ+QoM3fGYV9u6RByX1MQQ==

Evet art─▒k elimizde prototurk.com yerine herkese a├ž─▒k bir de─čer olan IJ+QoM3fGYV9u6RByX1MQQ== 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+QoM3fGYV9u6RByX1MQQ==';
$cipher = 'AES-128-ECB';
$key = 'prototurk.2021.xx1';
$decoded = openssl_decrypt($data, $cipher, $key); // ├ž─▒kt─▒: prototurk.com

┼×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├ž bekleriz? Gelin deneyelim.

$data = 'prototurk.com'; // verinin ┼čifrelenmemi┼č birebir ayn─▒ halini g├Ânderdik
$cipher = 'AES-128-ECB';
$key = 'prototurk.2021.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. Yani;

$data = 'IJ+QoM3fGYV9u6RByX1MQQ==';
$cipher = 'AES-128-ECB';
$key = 'prototurk.2021.xx1';
$decoded = openssl_decrypt($data, $cipher, $key);

if (!$decoded){
    echo "Hatal─▒ bir de─čer g├Ânderdiniz";
    exit;
}

// sorun yoksa i┼člem buradan devam eder
// .....
tayfunerbilen
151 g├╝n ├Ânce yazd─▒ - 1016 kez g├Âr├╝nt├╝lendi.
├ľnceki PHP S├╝r├╝m├╝n├╝z├╝ 8'e G├╝ncelleyin! Sonraki PHP'de Y├╝kleme Limitini Y├╝kseltmek