Merhaba arkadaşlar bu yazımızda Laravel'de bir dizeyi şifreleyip çözebilme konusuna değinmek istiyorum.

Şifreleme, bilgisayarlar icat edilmeden çok önce kullanılıyordu; Aslında bilinen ilk kanıtlar MÖ 1900'lere kadar Mısır'da bulunuyor.

Bir başka popüler şifreleme tekniği de Caesar şifresidir. En basit tekniklerden biridir ve nasıl çalıştığı, metnin her harfinin alfabenin altındaki belirli sayıda pozisyonla değiştirilmesidir.

Diğer taraftan Laravel, AES-256 şifreleme sağlamak için OpenSSL kullanan ve böylece gerçekten kendi şifreleme tekniklerinizi geliştirmenize gerek kalmayan, kullanıma hazır şifreleme sağlar.

Bu eğitimde, metni şifrelemek için Laravel şifrelemesini nasıl kullanacağınızı öğreneceksiniz!

Hazırsak başlayalım; 

1-) App Key Configuration

Başlamadan önce, bir Uygulama Anahtarının oluşturulmuş olduğundan emin olmanız gerekir.

Önceden oluşturulmuş bir anahtarınız yoksa, bunu yapmak için aşağıdaki komutu çalıştırabilirsiniz:

php artisan key:generate

Laravel şifreleme hala bir anahtar olmadan çalışacaktır, ancak şifrelenmiş değerler güvensiz olabilir.

2-) Route Tanımlayalım

Artık Uygulama Anahtarımızı hazırladığımıza göre, devam edip biri Laravel şifrelemesini test etmek ve diğeri Laravel şifre çözmeyi test etmek için iki yol oluşturalım.

Bunu yapmak için routes/web.php dosyayı açın ve aşağıdakileri ekleyin:

Route::get('encrypt', EncryptionController@encrypt');

Route::get('decrypt', EncryptionController@decrypt');

İlk yol, /encrypt bizim için şifrelenmiş bir dizi oluşturacak olan yoldur ve ikincisi bu dizenin şifresini çözecek olan yoldur.

Bununla EncryptionController denetleyiciyi oluşturalım!

3-) Controller Oluşturalım

Bu örnek için, EncryptionController adında yeni bir denetleyici oluşturalım:

php artisan make:controller EncryptionController

Bu yeni bir denetleyicisi oluşturur: app/Http/Controllers/EncryptionController.php.

Ardından, bu dosyayı metin düzenleyicinizde açın ve önce Crypt ekleyelim; 

use IlluminateSupportFacadesCrypt;

Şimdi sıra geldi fonksiyonlarımızı oluşturmaya bu oluşturacağımız fonksiyonlardan birisi şifreleme için diğeri  de çözümleme için olsun. 

4-) Ecryption Fonksiyonumuz

Bizim için sabit kodlanmış bir dizeyi şifreleyecek basit bir Şifreleme yöntemiyle başlayalım:

 public function encrypt()
   {
        $encrypted = Crypt::encryptString('Merhaba yazilim.net Kullanıcıları');
        print_r($encrypted);
   }

Yöntemin özeti:

  • public function encrypt() : önce yöntemi tanımlıyoruz
  • Crypt::encryptString('Hello DevDojo'): sonra Crypt::encryptString() statik yöntemi kullanarak basit bir Hello DevDojodizeyi şifreleriz
  • print_r($encrypted); : Son olarak, şifrelenmiş dizeyi ekrana yazdırırdık.

Bu ziyaretten sonra, /encrypt tarayıcınız aracılığıyla URL'yi ve buna benzer şifreli bir dize göreceksiniz:

string(188) "eyJpdiI6ImxSdGhkeVg2VHdlCNdUs0citKT0Vf4NHc9ddPdffSIsInZhbHVlIjoiSEM5V0pVWURySnVabGlnenNwTDgzUT09IiwibWFjIjoiZTJlYWVhYmI2OTJmZWJkZWVhOTg3Nzc1ZTQwNdDBldNmId3ODIzZTY5YTgwZGM3N2YwYTRmYTEwYmJiYmNdjZgmE2NiJ9"

5-) Decryption Fonksiyonumuz

  public function decrypt()
    {
         $decrypt= Crypt::decryptString('buraya_sifrelenmis_metni_ekliyoruz');
         print_r($decrypt);
    }

Encrypt yöntemine benzer şekilde , dizenin şifresini çözmek için Crypt yine decryptString statik fonksiyonunu kullandık!

Sonra bu sefer /decrypt tarayıcınızdaki URL'yi ziyaret eder ve şifresi çözülmüş Merhaba yazilim.net Kullanıcıları mesajı görürsünüz !

Elbette yukarıdaki örnek sadece Crypt işlevsellik gösteriyor. Gerçek hayattaki bir senaryoda, dizenizi büyük olasılıkla bir POST isteğinden veya örneğin bir API çağrısından alırsınız ve ardından işlemleri yaparsınız. 

Laravel Encryption'ın nasıl kullanılacağı hakkında daha fazla bilgi için, buradaki resmi dökümanlara göz atmanızda fayda olacaktır.:

https://laravel.com/docs/8.x/encryption

Umarım yardımcı olmuştur.