Aslında burada şifrelemeden kastım "hash"leme işlemi. Genel anlamda bu gibi durumların "şifreleme" gibi düşünülmesinden dolayı bu şekilde yazdım. Bende ilk zamanlar böyle düşünüyordum ve bu yazının içeriğini de aslında farklı yazmıştım ama; zaman geçtikçe ve araştırmalar yaptıkça bunun böyle olmadığını gördüm :) Bir çok eleştiri de aldım bu konuyla ilgili ama, kim yeni başladığını şeylerde hatalar yapmıyor ki? :)
Neyse çok uzatmayayım. Özetleyecek olursak, aşağıda işinize yarayabilecek en popüler hashleme ve kodlama tekniklerinden örnekler vereceğim. Zaten genel bir araştırma yapınca bu konular için karşınıza çıkacak muhtemel sonuçlar; MD5, SHA1, BASE64 vs gibi konular olacak. PHP'de bunlar nasıl kullanılıyormuş, ne gibi bir şey elimize geçiyormuş, alternatif olarak neler yapabiliriz bir göz atalım.
MD5 algoritması ile hashleme sonucunda 16'lık bir karakter dizgesinden 32 karakterlik bir değer elde edilir. MD5 metodu ile hashlenen bir değerin, geriye dönüşü olmaz. Yani bu fonksiyon ile hashlenen bir dizgeyi tekrar eski haline dönüştüremezsiniz. MD5 her ne kadar geri dönüştürülemediği için güvenli gibi gözükse de, güvenliğimiz için kolay verileri hashlemekten kaçınırsak iyi ederiz. Veya hashlenecek veriye ek olarak sadece bizim bildiğimiz bir ifade ekleyip (salt) hashleme işlemini biraz daha zor bir hale getirebiliriz. Şimdi MD5 ile hashlenmiş bir veriye bakalım:
<?php
$x = 123456;
echo md5($x); // çıktısı: e10adc3949ba59abbe56e057f20f883e
md5'i detaylı inceleyinSHA1 algoritması da 16'lık bir karakter dizgesinden 40 karakterlik bir değer elde eder. MD5 için verdiğim önerileri, burada da dikkate alabilirsiniz. Yukardaki örneği bir de sha1 ile hashleyelim:
<?php
$x = 123456;
echo sha1($x); // çıktısı: 7c4a8d09ca3762af61e59520943dc26494f8941b
BASE64 bir kodlama tekniği, bir encoding algoritması olarak söylenebilir ve diğer metotların aksine geri dönüştürülebilir. Yani encode ettiğiniz bir veriyi, tekrar eski haline getirebilirsiniz. BASE64 ile encode ettiğiniz veri, orjinal içeriğe göre %30 daha fazla yer kaplar. (Bunu bir yerde okumuştum ama, şu an kaynak veremiyorum. Yanlış bilgiyse beni de bilgilendirin lütfen.) PHP'de bu encoding metodunu kullanmak için base64_encode, geri dönüştürmek için ise base64_decode fonksiyonlarını kullanacağız.
<?php
$x = 123456;
$encode_veri = base64_encode($x); // çıktısı: MTIzNDU2
$orjinal_veri = base64_decode($encode_veri); // çıktısı: 123456
echo 'Encode edilen veri:'.$sifreli_veri.'<br />';
echo 'Orjinal veri:'.$orjinal_veri;
Daha karışık ve olabildiğince benzersiz hashler elde etmek için yukarıda örneklerini görmüş olduğumuz metotları birden fazla veya 2-3 farklı metodu bir arada kullanabilirsiniz. Örneğin verinizi önce sha1, sonra md5 ile hashleyebilirsiniz. Bunun yanı sıra yukarda da belirttiğim gibi; verinizin başına veya sonuna sadece sizin tarafınızdan bilenecek bir ek veri (salt) ekleyebilirsiniz ve bu şekilde hashleme yapabilirsiniz. Böylece bulunması daha zor bir hash elde etmiş olursunuz.
Bunun yanı sıra, PHP'de bulunan password_hash, hash_hmac ve diğer hash_* metotlarını da kesinlikle incelemenizi ve kullanmanızı öneririm. Yukarıdaki metotlar her ne kadar daha çok bilinen ve basit anlamda tercih edilen yöntemler olsa da, bahsettiğim metotlar ile daha karmaşık hashler üretmeniz mümkün. Ayrıca yine yukarıda bahsettiğim verinize ek bir salt ekleme işlemini, bu metotlarda varsayılan olarak bulabilir ve kullanabilirsiniz.
Umuyorum ki faydası olan bir yazı olmuştur. Soru veya görüşlerinizi yorum kısmından yazabilirsiniz.
Sağlıcakla kalın. :)
24 Kasım 2022 tarihinde PHP 8.2 versiyonunun kararlı sürümünün yayınlanması bekleniyor. Bu yazımızda PHP’nin yeni sürümü için yapılan yenilikleri ve iyileştirmeleri inceleyeceğiz.
...
In Laravel, you can make concurrent request by using pool method of the HTTP Client of the Laravel....
Laravel has a very powerful and useful Service Container and you can extend any service from the Laravel Container any time. For that, you can use the extend() method to decorate or configure the resolve services from the container. ...
We use models a lot when developing projects with Laravel. By defining the relationships between the tables within the models, we ensure that the relevant data is brought over the database in a practical way. We can take advantage of the Eager Loading feature to increase performance and get faster results when performing operations with related models. For this, we can use the with() method when creating a query from the related models:
...
Bildiğiniz gibi Laravel ile geliştirme yaparken modellerimize uygun şekilde fake veriler oluşturmak için Faker kütüphanesi ile fazlaca haşır neşir oluyoruz. Genellikle text veriler oluştursak da, Faker kütüphanesinin resim oluşturmak gibi yetenekleri de var:...
Laravel'de zamanlanmış görev (scheduled task) tanımlarken, çalışan komutun tamamlanıp tamamlanmadığını anlamak ve buna göre başka işlemler yapmak istiyorsanız şu şekilde bir yapı kullanabilirsiniz:
PHP 8.1, 25 Kasım 2021 tarihinde yayınlandı. Bu sürümde hayatımıza neler girdi, ne gibi değişiklikler yapıldı birlikte inceleyelim mi?...
Merhabalar. PHP 8 ile birlikte hayatımıza neler gelecek, neler değişecek birlikte göz atmaya var mısınız? Haydi başlayalım o zaman…
...
Selamlar. Ramazan ayının ve sahuru beklemek bahanesiyle gece geç saatlere kadar takılmanın vermiş olduğu yetkiye dayanarak yine bazı projeler üzerine çalışıyor, bazı araştırmalar yapıyor ve müzik dinliyordum. Ve birden "uzun zamandır bir şeyler karalamıyorum ben ya" diye bir düşünce geçti beynimin derinliklerinden. Hemen buraya geldim....
React’in 16.8 versiyonu ile birlikte hayatımıza Hook kavramı girdi. Artık çok daha az kod ile daha efektif React Componentleri yazabiliyoruz. Hooks konusu ile ilgili detaylı bilgiyi React’in kendi dokümantasyonundan okuyabilir, bilgi sahibi olabilirsiniz....
PHP 7.4 ile birlikte hayatımıza girecek olan özelliklere şöyle hızlıca bir bakış atmaya ne dersiniz?
...
React ile High Order Component kavramını sizlere anlatmaya çalışacağım....
Selamlar, oldukça uzun bir zaman sonra tekrar buralardayım. Dolu dolu geldim ama; biraz oturun, konuşalım....
Yine aylar olmuş ve buralarda gözükmüyorum. Ne zaman "buralara daha çok vakit ayıracağım, bol bol yazacağım" desem, kesin başka bir şeyler çıkıyor; işler, güçler, yoğunluklar vs, odaklanamıyorum. Öyle ya da böyle bunu bir düzene oturtacağım. inatçıyım bu konuda....
Buraları yine oldukça aksatmış olmanın verdiği iç rahatsızlığı ile, geçen haftadan beri bir şeyler karalamaya olan isteğim ancak şu an vuku buluyor. Geçen hafta oldukça yoğun ve hareketli geçtiği için yazmaya vakit bulamadım aslında. Ya da ne bileyim, belki de bahane buluyorum......
"Gidelim buradan... Göğsünü sıkan, içini daraltan o laneti geride bırakıp gidelim. Burada yağmur bile güzel yağmıyor artık. Yağmuru güzel yağan bir yerlere gidelim....
2 adet yorum yapılmış. Sende yap!
$parola = md5(sha1(sha1(md5($_POST['parola'])))); kullanırsanız kırılması çok daha zorlaşacaktır.