SORU
8 EYLÜL 2010, ÇARŞAMBA


En hızlı olmayan bir şifreleme kullandığı için karma?

Ben aslında hazırlık ifadeler koymak veritabanı, daha bozuk çok istiyorum saklamak için kısa bir özet. onların yerine (olacağım sadece karşılaştırılması ise onların var ya da yok, bu yüzden karma ideal).

Sanırım MD5 oldukça yavaş 100,000 istekleri çok istedim, ve ne en iyi yöntem hash cümleleri, belki yayıyoruz benim kendi hash fonksiyonu kullanılarak veya hash('md4', '...' olurdu daha hızlı sonunda?

Biliyorum MySQL var MD5(), bu durumda bu tamamlayıcı bir bit hızı sorgunun sonunda, ama belki daha da hızlı karma işlevi MySQL bilemiyorum işe yarar PHP..

CEVAP
8 EYLÜL 2010, ÇARŞAMBA


fcn     time  generated hash
crc32:  0.03163  798740135
md5:    0.0731   0dbab6d0c841278d33be207f14eeab8b
sha1:   0.07331  417a9e5c9ac7c52e32727cfd25da99eca9339a80
xor:    0.65218  119
xor2:   0.29301  134217728
add:    0.57841  1105

Ve bu kodu oluşturmak için kullanılır:

 $loops = 100000;
 $str = "ana are mere";

 echo "<pre>";

 $tss = microtime(true);
 for($i=0; $i<$loops; $i  ){
  $x = crc32($str);
 }
 $tse = microtime(true);
 echo "\ncrc32: \t" . round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i  ){
  $x = md5($str);
 }
 $tse = microtime(true);
 echo "\nmd5: \t".round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i  ){
  $x = sha1($str);
 }
 $tse = microtime(true);
 echo "\nsha1: \t".round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i  ){
  $l = strlen($str);
  $x = 0x77;
  for($j=0;$j<$l;$j  ){
   $x = $x xor ord($str[$j]);
  }
 }
 $tse = microtime(true);
 echo "\nxor: \t".round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i  ){
  $l = strlen($str);
  $x = 0x08;
  for($j=0;$j<$l;$j  ){
   $x = ($x<<2) xor $str[$j];
  }
 }
 $tse = microtime(true);
 echo "\nxor2: \t".round($tse-$tss, 5) . " \t" . $x;

 $tss = microtime(true);
 for($i=0; $i<$loops; $i  ){
  $l = strlen($str);
  $x = 0;
  for($j=0;$j<$l;$j  ){
   $x = $x   ord($str[$j]);
  }
 }
 $tse = microtime(true);
 echo "\nadd: \t".round($tse-$tss, 5) . " \t" . $x;

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • CommonArtisan

    CommonArtisa

    7 Temmuz 2012
  • Top Gear

    Top Gear

    27 Mart 2006