Самый быстрый хеш для не криптографического использования? - PullRequest
132 голосов
/ 08 сентября 2010

Я, по сути, готовлю фразы для помещения в базу данных, они могут быть искажены, поэтому я хочу вместо них сохранить короткий хеш (я буду просто сравнивать, существуют они или нет, поэтому хеш идеален).

Я предполагаю, что MD5 довольно медленный при 100 000+ запросах, поэтому я хотел знать, каков будет лучший способ для хеширования фраз, возможно, развертывание моей собственной хэш-функции или использование hash('md4', '...' в конечном итоге будет быстрее?

Я знаю, что в MySQL есть MD5 (), так что это немного увеличит скорость выполнения запроса, но, возможно, есть еще более быстрая функция хеширования в MySQL, о которой я не знаю, которая будет работать с PHP ..

Ответы [ 13 ]

1 голос
/ 07 ноября 2012

Adler32 работает лучше всего на моей машине. И md5() получилось быстрее, чем crc32().

0 голосов
/ 09 декабря 2013

Реализация для md5 внутри хэша немного быстрее, чем для md5 (). Так что это может быть вариант или что-то еще, пожалуйста, попробуйте:

<code>echo '<pre>';

$run = array();

function test($algo)
{
  #static $c = 0;
  #if($c>10) return;
  #$c++;

 $tss = microtime(true);
 for($i=0; $i<100000; $i++){
  $x = hash($algo, "ana are mere");
 }
 $tse = microtime(true);

 $GLOBALS['run'][(string)round($tse-$tss, 5)] = "\nhash({$algo}): \t".round($tse-$tss, 5) . " \t" . $x;
 #echo "\n$i nhash({$algo}): \t".round($tse-$tss, 5) . " \t" . $x;
}
array_map('test', hash_algos());
ksort($run);
print_r($run);
echo '
';

Вы можете увидеть на http://www.dozent.net/Tipps-Tricks/PHP/hash-performance

0 голосов
/ 08 сентября 2010

CRC32 быстрее, но менее безопасен, чем MD5 и SHA1.Между MD5 и SHA1 не так много различий в скорости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...