PHP ile rasgele şifre üretmek

PHP ile rasgele ÅŸifre üretmek için aÅŸağıdaki scripti kullanabilirsiniz. Fonksiyon sizin vereceÄŸiniz uzunluk deÄŸerine göre bir ÅŸifre üretiyor. Algoritma ÅŸu ÅŸekilde çalışıyor;ilk önce rand() fonksiyonu ile ÅŸifreyi oluÅŸturacak karakterlerin ASCII deÄŸerleri elde ediliyor, chr() fonksiyonu ile de karakter karşılıkları elde ediliyor ve switch() fonksiyonunda da hangi case’in çalışacağı yine rasgele belirlenerek her bir karakter için üç farklı tipde deÄŸer elde edilmesi saÄŸlanıyor.

  1. function rasgeleSifre($uzunluk)
  2. {
  3.  $sifre = ‘’; //baÅŸlangıç deÄŸeri boÅŸ olarak ayarlanıyor.
  4.  for($i=0;$i<$uzunluk;$i++)
  5.  {
  6.    switch(rand(1,3))
  7.    {
  8.      case 1: $sifre.=chr(rand(48,57))break; //0-9
  9.      case 2: $sifre.=chr(rand(65,90))break; //A-Z
  10.      case 3: $sifre.=chr(rand(97,122)); break; //a-z
  11.    }
  12.  }
  13.  return $sifre;
  14. }
  15.  
  16. $sifre=rasgeleSifre(200);
  17. echo $sifre;
  18. ?>

3 Responses to PHP ile rasgele ÅŸifre üretmek »»


Comments

  1. Yorum by cihan | 2006/06/12 at 17:02:30

    aynı şifreyi verme olasılığı yok mu bunda benim bildiğim rnd() fonksyonu çekirdek olarak sistem saatini referans alıyor.Ama başka türlüyse bilemem tabi

  2. Yorum by UÄŸur YILDIZ | 2006/06/13 at 01:18:41

    Elbette üretilen rasgele sayının aynı gelme olasılığı vardır. Üretilen sayının çekirdeğindeki referans zaman aralığının değiştirilmesi de mümkündür. bu işlem için genellikle srand() fonsiyonu rand() fonksiyonundan önce şu şekilde kullanılır.

    1. srand((double)microtime()*1000000);

    Ama dahi iyi sonuç veren php fonksiyonları da mt_rand() ve mt_srand() fonksiyonlarıdır. PHP varsayılan olarak rand() fonksiyonunda libc kütüphanesini kullanır. mt_rand() ve mt_srand() fonksiyonları varsayılan olarak kullanılan rand() fonksiyonundan ortalama 4 kez daha hızlı rasgele sayı üretmektedir.

  3. Yorum by Gokhan | 2006/06/21 at 14:36:18

    iyi guzelde bloguna bırseyler ekle ıstersen.ayrıca bilardo maceralarını yaz bloguna


Leave a Reply »»