Las funciones de hash criptográficos son objetos que intentan cumplir algunas propiedades (a saber, resistencia a colisiones, preimágenes y segundas preimágenes) . Se dice que un algoritmo que falla al ofrecer estas propiedades está "roto" y, por definición, no debe usarse en protocolos donde se necesitan las propiedades no cumplidas.
MD5 está roto (por colisiones). SHA-1 no es (al menos, no tanto). Si su protocolo requiere resistencia a las colisiones, entonces no use MD5. P.ej. algunos investigadores han logrado hacer certificados falsos utilizando la falta de resistencia de MD5 contra las colisiones.
En este momento, SHA-1 está "ligeramente debilitado" con respecto a las colisiones, pero no lo suficiente como para que se haya producido una colisión real. Tomaría una cantidad sustancial de tiempo y computadoras (meses, miles), por lo tanto, bastante dinero. A contrario , las colisiones de MD5 se pueden generar en menos de un segundo en una PC básica.
SHA-1 es ligeramente más lento que MD5 cuando se procesan datos en masa, lo que no importa tanto como se suele creer. Cuando una PC básica (de nuevo) hace hash de archivos grandes, la parte de hash es en realidad tres veces más rápida que la parte de lectura desde el disco cuando se usa SHA-1. El hecho de que MD5 sea un 40% más rápido que SHA-1 no importará, ya que el cuello de botella es el disco, no el hashing.
SHA-256 y SHA-512 son las funciones hash de propósito general actualmente recomendadas. Son más lentos que SHA-1, pero aún son "lo suficientemente rápidos" para la mayoría de los propósitos. No tienen debilidades conocidas (incluso debilidades teóricas).