246 votes

Hachage plus rapide pour des utilisations non cryptographiques ?

Je suis essentiellement de la préparation des phrases à mettre dans la base de données, ils peuvent être malformé si je veux stocker un court de hachage de la place (je vais être une simple comparaison si elles existent ou non, afin de hachage est l'idéal).

Je suppose que MD5 est assez lente sur plus de 100 000 demandes donc je voulais savoir quelle serait la meilleure méthode pour hacher les phrases, peut-être le déploiement de ma propre fonction de hachage ou de l'utilisation de hash('md4', '...' serait plus rapide à la fin?

Je sais que MySQL a MD5(), ce qui serait un complément à un peu de vitesse sur la requête de la fin, mais peut-être qu'il y a en outre une plus rapide fonction de hachage dans MySQL je ne sais pas sur qui fonctionne avec PHP..

187voto

Quamis Points 4301
<pre><code></code><p><pre><code></code></pre></pre>

100voto

hdante Points 2192

Il y a une comparaison de la vitesse sur xxhash site. Le copier-coller ici:

  • Nom Vitesse Q. Score Auteur
  • xxHash 5.4 GO/s 10
  • MumurHash 3a 2,7 GO/s 10 Austin Appleby
  • SpookyHash 2.0 GB/s, 10 Bob Jenkins
  • SBox 1,4 GO/s 9 Bret Mulvey
  • Lookup3 1,2 GO/s 9 Bob Jenkins
  • CityHash64 1.05 GB/s, 10 Pike & Alakuijala
  • FNV 0.55 GB/s 5 Fowler, Noll, Vo
  • CRC32 0.43 GB/s 9
  • MD5-32 0.33 GB/s, 10 Ronald L. Rivest
  • SHA1-32 0.28 GB/s 10

Il semble donc xxHash est de loin le plus rapide, tandis que beaucoup d'autres beat âgés de tables de hachage, comme CRC32, MD5 et SHA.

https://code.google.com/p/xxhash/

69voto

joschi Points 4278

CRC32 est assez rapide et il existe une fonction pour cela : http://www.php.net/manual/en/function.crc32.php

Mais vous devez être conscient que le CRC32 aura des collisions plus que MD5 ou même les hachages SHA-1, simplement en raison de la longueur réduite (32 bits, contre 128 bits respectivement 160 bits). Mais si vous voulez juste pour vérifier si une chaîne stockée est corrompue, vous serez très bien avec CRC32.

55voto

Pez Cuckow Points 5425

Liste de classement où chaque boucle partage la même chose pour la crypte que toutes les autres.

Et la sortie

19voto

Aalex Gabi Points 333
<pre><code></code><p>Il semble que crc32 est plus rapide pour les petits messages (dans ce cas 26 caractères) tout en md5 pour plus les messages (dans ce cas > 852 personnages).</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X