MD5 es un algoritmo de hashing débil y se puede descifrar usando una tabla rainbow como con: md5breaker.com
El hash sha1 se genera utilizando el código java que se ejecuta en el servidor, un ejemplo del código está disponible en: Sha1 java De la misma manera, el hash MD5 se procesa en el servidor usando Java, el código que genera el hash está disponible en este artículo: MD5 java
Sha1 y Md5 son algoritmo débil. Es preferible usar SHA256 o sha512 que tienen menos probabilidad de colisión. SHA512 es una variante del conjunto SHA-2 de funciones hash criptográficas. Genera un número hexadecimal de 128 dígitos, donde sha1 solo genera un número de 40 dígitos. Generar sha 512 usando java
MD5 on Wikipedia
SHA-1 on Wikipedia