Le calcul d'un hachage MD5 est-il moins gourmand en CPU que SHA-1 ou SHA-2 sur du matériel x86 d'ordinateur portable «standard»? Je suis intéressé par des informations générales, non spécifiques à une certaine puce.
MISE À JOUR: Dans mon cas, je suis intéressé par le calcul du hachage d'un fichier. Si la taille du fichier compte, supposons que son 300K.
Réponses:
Oui, MD5 est un peu moins gourmand en CPU. Sur mon Intel x86 (Core2 Quad Q6600, 2,4 GHz, utilisant un cœur), j'obtiens ceci en mode 32 bits:
et ceci en mode 64 bits:
Les chiffres sont en mégaoctets par seconde, pour un message "long" (c'est ce que vous obtenez pour les messages de plus de 8 Ko). C'est avec sphlib , une bibliothèque d'implémentations de fonctions de hachage en C (et Java). Toutes les implémentations sont du même auteur (moi) et ont été faites avec des efforts comparables d'optimisations; ainsi les différences de vitesse peuvent être considérées comme réellement intrinsèques aux fonctions.
À titre de comparaison, considérez qu'un disque dur récent fonctionnera à environ 100 Mo / s, et tout ce qui se trouve sur USB dépassera 60 Mo / s. Même si SHA-256 semble "lent" ici, il est assez rapide pour la plupart des cas.
Notez qu'OpenSSL inclut une implémentation 32 bits de SHA-512 qui est assez plus rapide que mon code (mais pas aussi rapide que le SHA-512 64 bits), car l'implémentation OpenSSL est en assemblage et utilise des registres SSE2, ce qui ne peut pas être fait en clair C. SHA-512 est la seule fonction parmi ces quatre qui bénéficie d'une implémentation SSE2.
Edit: sur cette page ( archive ), on peut trouver un rapport sur la vitesse de nombreuses fonctions de hachage (cliquez sur le lien "Telechargez maintenant"). Le rapport est en français, mais il est principalement rempli de tableaux et de chiffres, et les chiffres sont internationaux. Les fonctions de hachage implémentées n'incluent pas les candidats SHA-3 (sauf SHABAL) mais je travaille dessus.
la source
Sur mon MacBook Air 2012 (Intel Core i5-3427U, 2x 1,8 GHz, 2,8 GHz Turbo), SHA-1 est légèrement plus rapide que MD5 (en utilisant OpenSSL en mode 64 bits):
Mise à jour: 10 mois plus tard avec OS X 10.9, SHA-1 est devenu plus lent sur la même machine:
Deuxième mise à jour: sous OS X 10.10, la vitesse SHA-1 est de retour au niveau 10.8:
Troisième mise à jour: OS X 10.14 avec LibreSSL est beaucoup plus rapide (toujours sur la même machine). SHA-1 est toujours en tête:
la source
La vraie réponse est: cela dépend
Il y a quelques facteurs à considérer, les plus évidents sont: le processeur sur lequel vous exécutez ces algorithmes et l'implémentation des algorithmes.
Par exemple, mon ami et moi exécutons exactement la même version openssl et obtenons des résultats légèrement différents avec différents processeurs Intel Core i7.
Mon test au travail avec un processeur Intel (R) Core (TM) i7-2600 à 3,40 GHz
Et le sien avec un processeur Intel (R) Core (TM) i7 920 à 2,67 GHz
Nous exécutons tous les deux exactement les mêmes binaires d'OpenSSL 1.0.1j 15 octobre 2014 à partir du package officiel d'ArchLinux.
Mon opinion à ce sujet est qu'avec la sécurité supplémentaire de sha1, les concepteurs de CPU sont plus susceptibles d'améliorer la vitesse de sha1 et plus de programmeurs travailleront sur l'optimisation de l'algorithme que md5sum.
J'imagine que md5 ne sera plus utilisé un jour car il semble qu'il n'a aucun avantage sur sha1. J'ai également testé certains cas sur des fichiers réels et les résultats étaient toujours les mêmes dans les deux cas (probablement limités par les E / S disque).
md5sum d'un gros fichier de 4,6 Go a pris exactement le même temps que sha1sum du même fichier, il en va de même avec de nombreux petits fichiers (488 dans le même répertoire). J'ai effectué les tests une douzaine de fois et ils obtenaient constamment les mêmes résultats.
-
Il serait très intéressant d'approfondir cette question. Je suppose que certains experts pourraient fournir une réponse solide à la raison pour laquelle sha1 devient plus rapide que md5 sur les nouveaux processeurs.
la source
openssl speed
fait, qui est le premier et le plus significatif benchmark.MD5 bénéficie également de l'utilisation de SSE2, consultez BarsWF et dites-moi que ce n'est pas le cas. Tout ce qu'il faut, c'est un peu de connaissances en assembleur et vous pouvez créer vos propres routines MD5 SSE2. Cependant, pour de grandes quantités de débit, il y a un compromis entre la vitesse pendant le hachage par rapport au temps passé à réorganiser les données d'entrée pour qu'elles soient compatibles avec les instructions SIMD utilisées.
la source
sha1sum est un peu plus rapide sur Power9 que md5sum
la source