La verdadera respuesta es: depende
Hay un par de factores a considerar, los más obvios son: la CPU en la que está ejecutando estos algoritmos y la implementación de los algoritmos.
Por ejemplo, mi amigo y yo ejecutamos exactamente la misma versión de openssl y obtenemos resultados ligeramente diferentes con diferentes procesadores Intel Core i7.
Mi prueba en el trabajo con una CPU Intel (R) Core (TM) i7-2600 a 3.40GHz
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 64257.97k 187370.26k 406435.07k 576544.43k 649827.67k
sha1 73225.75k 202701.20k 432679.68k 601140.57k 679900.50k
Y el suyo con una CPU Intel (R) Core (TM) i7 920 @ 2.67GHz
The 'numbers' are in 1000s of bytes per second processed.
type 16 bytes 64 bytes 256 bytes 1024 bytes 8192 bytes
md5 51859.12k 156255.78k 350252.00k 513141.73k 590701.52k
sha1 56492.56k 156300.76k 328688.76k 452450.92k 508625.68k
Ambos estamos ejecutando exactamente los mismos binarios de OpenSSL 1.0.1j 15 de octubre de 2014 desde el paquete oficial de ArchLinux.
Mi opinión sobre esto es que con la seguridad añadida de sha1, es más probable que los diseñadores de CPU mejoren la velocidad de sha1 y más programadores trabajarán en la optimización del algoritmo que md5sum.
Supongo que algún día ya no se usará md5 ya que parece que no tiene ninguna ventaja sobre sha1. También probé algunos casos en archivos reales y los resultados fueron siempre los mismos en ambos casos (probablemente limitado por la E / S del disco).
md5sum de un archivo grande de 4.6GB tomó exactamente el mismo tiempo que sha1sum del mismo archivo, lo mismo ocurre con muchos archivos pequeños (488 en el mismo directorio). Hice las pruebas una docena de veces y obtuvieron constantemente los mismos resultados.
-
Sería muy interesante investigar esto más a fondo. Supongo que hay algunos expertos que podrían proporcionar una respuesta sólida a por qué sha1 se está volviendo más rápido que md5 en los procesadores más nuevos.