hackmin veo que no tienes algunos conceptos claros, MD5 no encripta genera un hash de una cadena de texto o programa.
Este hash generado se puede utilizar para comprobar que la cadena genera ese hash o el programa genera ese otro hash y compararlo con el que teniamos al principio; vamos que se utiliza para comprobar la integridad de lo que queramos.
Ahora bien, por que se utilizan para guardar contraseñas, por que las funciones hash no son reversibles, esto es lo que te ha confundido. Cuando alquien se crea un usuario se genera un hash de su contraseña y se guarda, y cuando este se loguea se genera un hash de la contraseña que pone y se compara con la que teniamos guardada, debido a que cada cadena genera un unico hash (salvo colisiones) si el hash obtenido y el guardado es identico, entonces puede entrar.
Para utilizarlo para comprobar la integridad de un programa tienes "MD5 Checker".
Saludos.