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ıyoruzCrypt::encryptString('Hello DevDojo')
: sonraCrypt::encryptString()
statik yöntemi kullanarak basit birHello DevDojo
dizeyi şifrelerizprint_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.