Lo hará, pero hay un pero.
Lo hará porque está diseñado para producir confiablemente el mismo resultado dado una serie repetida de bytes; el punto es que podemos comparar los resultados para verificar que los bytes no hayan cambiado, o tal vez firmar digitalmente el MD5 resultado en lugar de firmar la fuente completa.
pero es que una fuente común de errores es hacer suposiciones sobre cómo se codifican las cadenas. MD5 funciona en bytes, no en caracteres, por lo que si usamos una cadena para hash, realmente estamos mezclando una determinada codificación de esa cadena. Algunos lenguajes (y más aún, algunos tiempos de ejecución) favorecen codificaciones particulares, y algunos programadores están acostumbrados a hacer suposiciones sobre esa codificación. Peor aún, algunas especificaciones pueden hacer suposiciones sobre codificaciones. Esto puede ser una causa de errores donde dos implementaciones diferentes producirán diferentes hash MD5 para la misma cadena. Esto es especialmente así en los casos en que los caracteres están fuera del rango U + 0020 a U + 007F (y dado que U + 007F es un control, ese tiene sus propios problemas).
Todo esto se aplica a otros valores hash criptográficos, como la familia de valores hash SHA.
Debe usar SHA512. – SLaks
está utilizando un valor hash md5 no cifrado. El cifrado y el hash no son lo mismo. – Chris
@Chris, mientras que los méritos del método son discutibles, puede utilizar un algoritmo hash para el cifrado de 1 vía. – corsiKa