Creo que es mejor que veamos qué es éso del MD5(me parece un tema lo suficientemente interesante como para extenderse un poco).
MD5 es un algoritmo de encriptación de dirección única, es decir, puedes encriptar, pero no desencriptar una cadena codificada con MD5. ¿Dónde está entonces la utilidad? Pues desde luego no sirve para almacenar datos encriptados y recuperarlos tal y como se encontraban inicialmente., pero es de tremenda utilidad para la verificación de claves. Imaginemos que un usuario almacena su password '12345' en una BD encriptado con MySQL. Cuando se quiera identificar introducirá los datos '12345' pero... en la BD están encriptados. ¿Cómo comparo entonces? Pues muy sencillo, lo que introduce el usuario('12345') lo encripto en MD5 y lo comparo con el que hay en la base de datos.
Existe otra función en PHP para encriptar datos: crypt(). Esta función, también de direción única, utiliza por defecto la encriptación estándar de UNIX, DES.
En principio, la única forma de averiguar a qué original equivale una cadena encriptada con MD5 es con el método de 'fuerza bruta', es decir, probando valores uno a uno.
Si necesitases recuperar los datos(esto es, encriptar y desencriptar posteriormente), puede crear tu propia función de encriptación. Las funciones que existen para manipulación de cadenas serán imprescindibles.
Un saludo.