Php Şifreleme Metodları (Md5, Crypt, Sha1 ve crc32)

PHP

Bu dersimizde Php’nin güvenlik ile ilgili bölümlerinden olan Md5, Crypt, Sha1 ve crc32 metodlarını inceleyeceğiz.

Md5, Crypt, Sha1 ve crc32 metodları ne işe yarar?

Web uygulamalarında kullanıcıların parolalarını güvenle saklamak için kullanılan yöntemlerdir.

Kullanım şekli:

md5($sifrelenecek_deger);

Örnek:

<?php

$parola=1234;
$md5_parola = md5($parola);
echo $md5_parola;

?>

Ekrandaki çıktı: 81dc9bdb52d04dc20036dbd8313ed055

Diyelimki üye kayıt işleminde md5 ile şifreleme kullanacaksınız. Üyeden alınan şifreyi md5($sifre); fonksiyonu ile şifreledikten sonra veritabanına kaydederiz. Üye Giriş sayfasında da gelen parola bilgisini aynı şekilde md5($gelen_sifre); fonksiyonu yardımıyla şifrelenmiş şekliyle veritabanından sorgulama yaptırırız.

Md5 şifreleme metodu ile şifrelenmiş bir parolanın kırılması mümkün değildir diyemeyiz. Nedeni ise, kullanıcıların şifrelerinin kısa olmasıdır. Yani ziyaretçi 1234 veya 6789 gibi bir şifre kullanıyorsa, bu şifrenin Md5’ini kırmak 1 dk bile sürmeyecektir. Ama parolasının içinde büyük-küçük harf, rakam ve özel karakter de bulunuyorsa kırılması neredeyse imkansızdır.

Güvenli parola örneği: cA1397%x**+_B

Kullanması pek pratik olmasa da güvenli olduğu kesin :)

Crypt, Sha1 ve crc32 metodları

Bu şifreleme metodlarını da aynı md5’de olduğu gibi kullanabiliriz.

Kullanım şekli:

crypt($1234);
Ekrandaki çıktı: $1$hJ..WK1.$WXgbWRRS2KrhzEfliDrAL0

sha1($1234);
Ekrandaki çıktı: 7110eda4d09e062aa5e4a390b0a572ac0d2c0220

crc32($1234);
Ekrandaki çıktı: -1679564637

Şifreleme metodları hakkında genel olarak bilgi sahibi olduk.
Sizlere tavsiyem, şifreleme işlemini güçlendirmek için md5 yada diğer yöntemler ile şifrelediğiniz veriyi, en az 3 defa daha şifrelemeniz. Böylece kırılması neredeyse imkansız olur.

Sonuçlarını daha iyi anlamanız için md5 ile 1,2 ve 3 defa şifrelenmiş verileri kırmaya çalıştığımızda aldığımız sonuçlara bakalım:

md5(); ile 1234’ün şifrelenmiş hali:

1 defa şifrelenen: 81dc9bdb52d04dc20036dbd8313ed055

md5-1

2 defa şifrelenen: ec6a6536ca304edf844d1d248a4f08dc

md5-2

3 defa şifrelenen: 2e99bf4e42962410038bc6fa4ce40d97

md5-3

Gördüğünüz gibi 1234 rakamının 1 defa şifrelenmiş hali kırılabiliyor. Ancak, şifrelenmiş veriyi 2 ve 3 kez tekrar şifrelediğimizde resimde de görüldüğü gibi şifre kırılamadı. Yani kullanıcı şifresini 1234 gibi kırılabilir basit bir şifre dahi yapsa siz bunun güvenlik önlemini almış oluyorsunuz.

26 Yorum

  1. Merhaba,
    Daha önce php ile yapılmış ve sanırım üyelerin şifreleri md5 yöntemi ile veritabanına saklanmış (32 karakterli) bir sitede bulununan üyeleri, yeni yaptığım joomla sitesine taşıyacağım. Üyelerin kodlarından hangi şifreleri kullandıklarını bulup, yeni siteye üyeleri aktarabilmem için bir program var mı? Yukarıda resimlerini gördüğümüz gibi bir program olursa işimi görür sanırım. Programın adını paylaşırsanız sevinirim. Kolay gelsin…

  2. Güzel bir makale olmuş fakat bence yetersiz sonuçta veritabanımıza giren kişi şifreyi illa geri çevirmek zorunda değil.Yeni bir üyelik açar ve şifresini “123456” olarak belirler.Bu şekilde veritabanından 123456’nın çevirisini öğrenmiş olur ve aynı şekilde çevrilen tüm şifrelere 123456’dır diyebilir.Bunun yerine o anda üretilen rastgele bir kodu da dahil etmekte fayda vardır. mesela bir üyeninki “123456q51” diğerininki “123456ulh” olur tabi bu kodu veritabanına kaydedip üye girişi yaparken eklemek zorundasınız.Bu şekilde tamamiyle güvenli şifreleriniz olur.

  3. ben sizden crypt hakkında bilgi almak istiyorum münkünsa çünkü bunu kullandıgımda sayfayı her yeniledigimde sonucun çıktının degiştigini görüyorum acaba bu normalmi kullandıgım yöntem aşagıdadır ve mutlaka bilgi istiyorum

    <?php
    //En Güçlü
    $egparola=1234;
    $eg_parola = substr(sha1(md5(crypt(base64_encode(substr(crc32($egparola),0,12))))),0,12);
    echo $eg_parola;
    ?>
    
  4. md5 ile yapılan şifrelemede çıkan bu sonucu 81dc9bdb52d04dc20036dbd8313ed055 ters işlem yaparak neye denk geldiğini bulabiliyormuyuz? Yani bir nevi sağlamasını yapabilirmiyiz?

  5. @Fikret md5 ile yapılan şifrelemenin geri dönüşü yok. md5 le oluşturduğu sonucu veritabanına kaydediyorsun. Kullanıcı giriş yaparken verdiği şifrenin md5 haliyle karşılaştırıp giriş yaptırıyorsun. Böylece veritabanına giren kişi şifrenin ne olduğunu çözemiyor.

  6. Evet Hüseyin bey daha önce öyleydi sanırım. Ama artık MD5 in geri dönüşü var. MD5 ile şifrelenen karakterleri çeviren siteler ve fonksiyonlar var halihazırda. O yüzden MD5 e pek güvenmemenizi tavsiye ederim.

  7. Md5 geri dönüştürülemiyor dediğiniz gibi bazı geri dönüşüm yapan siteler var. Fakat aslında çeviri yapmıyorlar sık kullanılan şifrelerin çıktılarını kaydedip onlar arasında arıyorlar. Önceki yorumumdaki gibi bir şifreleme yapılırsa geri dönüşüm mümkün olmaz.

  8. Bu konuya daha yeni ilgi duyuyorum da anladığım kadarı ile üye kaydı yapılırken verilen şifrenin çevrilmiş hali kaydediliyor. Üye giriş yaparken de girdiği şifrenin çevrilmiş hali ile kıyaslama yapılıyor. Peki bu şifrelemenin faydası tam olarak ne? Sonuç olarak inputtan girilen değer yine aynı olacak. Bunun bize sağladığı faydayı tam olarak kavrayamadım. Yardımcı olursanız sevinirim.

  9. @Mustafa Tevfik

    Şifrelemedeki amaç üye bilgilerinin güvenle saklanmasıdır. Örneğin veritabanınıza yetkisiz bir erişim yapıldığını varsayalım. Üye bilgilerindeki şifre alanı MD5 ile şifrelendiği için bu bilgiyi elde eden kişinin hiçbir işine yaramayacaktır. Tabi şifre 1234 veya admin gibi tahmin edilebilecek basit bir ifade değilse.

  10. anıl altun php kodlarını bunlarla şifreleyemezsin.
    Zend Guard
    IonCube
    SourceGuardian
    phpSHIELD bunları incele. Ioncube önerimdir. Fakat %100 güvenlik sağlamazlar bu da bir gerçek.

  11. @Fikret Yolu var. Şifre Kırıcılar İle Kırabilirsin Senin Md5 İn Sonucu
    81dc9bdb52d04dc20036dbd8313ed055 = 1234
    muş. Ama Md5 ‘i 4-5 kere şifrele veya baska şifrelemeler kullan. Sha1 de olmaz.

  12. $P$BGlISua5PZxWdLKBuM/NQ4kx6q.2XA/
    $P$BLtFROp2bj6r8sKCEqBcIzM2dOFgY4.
    5eacbc625752a56743caa6e07d36221c

    Bunların hangi tür şifreleme metoduyla şifrelendiğini söyler misiniz ?

  13. merhaba hocam peki bu şifreledigimiz rakamı geri nasıl cevirecegim . örnegin üye oldu şifresi md5 ile şifrelendi. sonra üye şifresini görecek mysql den cektigimde uzun bir rakam cıkıyor. bunu nasıl yaparım.

  14. Yıl oldu 2917, MD5 rahatlıkla kırılabiliyor, tabi bunu ulu ortada bulabileceğinizi sanmayın ama yapanların olduğu belli, bu yüzden MD5’i unutup diğer yöntemlere yelken açmalısınız. Yoksa bir gün bütün veritabanını çekmekle kalmayıp üstüne şifreleri çözülmüş bir şekilde işinizi bozacak olanlar çıkarsa başınızı belaya sokabilir. Zaman içinde Avrupa ile ilişkilerden ötürü internet denetimleri sıklaşacak ve bu tip zarardan dolayı kullanıcı sizi sorumlu tuttuğunda işin adli boyutu ciddi anlamda can yakıcı olabilir.

  15. @kartal

    burda crypt kullanmışsın ondan sürekli değişiyor kod crypt sil düzeliyor denedim birde $egparola=1234; seklinde yapmışsın onuda $egparola=’1234a’; diye tırnak kullanman lazım yoksa sadece rakam şifreler karakter girdiginde hata verir sayfa

  16. merhaba arkadaslar benim programın şifresi bu nasıl bulcam yardımcı olabilicek biri varmı
    676521085AF3F44A0-4851-11E3-AD8C-28D24438B53A1007759701059

  17. 5e972dd2d250d1e57bbe294c171a5b44 bunun şifresini çözme yardımcı olurmusuz rica etsem

  18. Bunun hangi metot ile sifrendgini söyleminiz kırılma imkanı varmı

  19. Bunun hangi metot ile sifrendgini söyleminiz kırılma imkanı var mı 5e972dd2d250d1e57bbe294c171a5b44

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir