MySQL Veri Şifreleme Fonksiyonları

Merhaba,

Öncelikle şu sayfa elinizin altında bulunsun; http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html

MySQL temel olarak 5 tane hazır şifreleme fonksiyonu ile gelir. Bunlar password(), encrypt(), md5, aes_encrypt() ve sha1()’dir.

Sahi birde sha() vardı, ne oldu ona? Birazdan…

MySQL konsolunu açarak hemen bir kaç deneme yapabilir

Sorulması gereken güzel soru : Hepsi tamam da, neden Encrypt fonksiyonu “NULL” döndürdü?

Çünkü bu fonksiyon yalnızca Unix üzerinde çalışmaktadır, eğer benim gibi Windows bir makine de denerseniz devamlı NULL sonucu döndürür (:

Peki bu neden önemli? Eğer web uygulamaları üzerinde bu fonksiyonlardan faydalanacaksanız, windows bir sunucu üzerinde bu fonksiyonu çalıştıramazsınız anlamına gelir.

Diğer bir önemli nokta ise Encrypt() fonksiyonu 2 karakterden daha az string ifadeler için işlem yapmaz, yine NULL döndürür.

Şimdi birde başta hatırladığım SHA’ya bakalım, hatta SHA1 ile karşılaştıralım ;

Dikkatlice karşılaştırırsanız her iki hash’in de aynı olduğunu görebilirsiniz. Çünkü uzun bir süredir, SHA artık SHA1 olarak anılıyor. Aslında durum tam olarak böyle değil, fakat şimdilik böyle yazmam yeterli, lafı uzatmayacağım.

Şimdi bir tablo oluşturalım ve içerisine MD5 ile kriptolanmış bir veriyi gönderelim ;

Şimdi ise test edelim ;

Gördüğünüz gibi hash olarak sonucumuzu görüntüledik.

Diğer fonksiyonlarıda kendiniz deneyebilirsiniz, aynı adımlar ile işlemekteler.

Şimdi clientinfo isimli veritabanımın varolan üç adet tablosunu MD5 ile crypt edeceğim;

Şimdilik bu kadar.

4 thoughts on “MySQL Veri Şifreleme Fonksiyonları”

  1. mrb hocam gayet güzel bir yazı olmuş peki şöyle birşey sorsam.

    serhat ismini SHA1 ile şifrelicem ama şunu eklicem ki cracklemek isteyen böyle görsün.

    serhatozel SHA1 Yapıcam otomatik. bu kısım tamam otomatik ozel eklicem bunu benden başka kimse bilmeyecek.

    Okuturken bunu tekrar serhat olarak nasıl okutucaz replace ile yapabilirim fakat özel karakterleri çözer mi  Encrypt() fonksiyonu yani şölye “+serhat+” bunu şifreledim diyelim

  2. Sayın bilgi şifrelenmiş veritabanı bilgisini karşılaştırırken yani serhatın şifresi ile veritabanındaki 354as65d4a6sd4a6sda46e şeklindeki değeri karşılaştırırken, veritabanındaki şifreli hali değil kişinin forma girdiği şifreyi tekrardan SHA1(“sifre”) şeklinde çevirerek karşılaştırma yapacaksınız.

    $sifre=$_POST[‘sifre’];
    mysql_query(” select * from kullanicilar where pass=SHA1(‘$sifre’) “);

    gibi. Bu şekilde veritabanındaki şifrelenmiş olan değeri hiçbir şekilde gün ışığına çıkarmamış olursunuz.

Leave a Reply