Sin duda md5 es uno de los algoritmos mas utilizados, pero como has comprobado, es bastante vulnerable...
Pero antes que preguntar que tipo de algoritmo es más adecuado, habría que decidirse por el tipo de encriptación a realizar, esta puede ser simétrica o asimétrica
Simétrica:
Se basa en que utiliza la misma clave para cifrar y descifrar mensajes por lo que las dos partes que se comunican han de ponerse de acuerdo de antemano sobre la clave a usar. Es decir, que si no tienes esa clave, es imposible, descifrar el codigo encriptado.... Imposible entre comillas claro, y es que tenemos que darnos cuenta de que cualquier estructura que siga un patrón antes o despues puede ser descifrada, pero justo en este punto es donde entran los Algoritmos como MD5, que intentan que dichos patrones sean lo más abstractos y cambiantes posibles
Asimétrica:Este método consiste en generar una pareja de llaves, una publica y una privada. Es decir, el emisor tiene una clave de encriptación, publica que puede o no ser descifrada (cosa que no compromete la seguridad), a partir de la cual cifra un mensaje. Una vez cifrado se lanza hacia el receptor, el cual tiene una clave privada, que solo sabe el, a través de la cual descifra el mensaje. El algoritmo más extendido sobre este tipo de encriptacion es el RSA,
(+ Info: http://www.pajhome.org.uk/crypt/rsa/index.html )
Tras leer esta explicación, muchos elegirían una encriptación de tipo asimétrica, ya que es mucho mas robusta y completa, pero esto no siempre es la mejor elección, ya que este tipo de encriptación requiere tal suma de recursos que en ocasiones no merece la pena el esfuerzo....
Bueeeno pues dicho esto centremonos en la criptografiía simétrica, que es la más común y la que todos acabamos usando. Y entre los algoritmos mas usados tenemos
DES: Que toma un texto claro de una longitud fija de bits y lo transforma mediante una serie de complicadas operaciones en otro texto cifrado de la misma longitud.
La clave de cifrazo mide 64 bits, aunque en realidad, sólo 56 de ellos son empleados por el algoritmo. Los ocho bits restantes se utilizan únicamente para comprobar la paridad, y después son descartados.
(+ Info: http://en.wikipedia.org/wiki/Data_Encryption_Standard)
Triple DES Que consiste en aplicar tres veces el algoritmo DES sobre la misma clave, de tal forma que la clave final de encriptación tendrá una longitud de 168 bits
(+ Info: http://csrc.nist.gov/publications/nistpubs/800-67/SP800-67.pdf )
AES: También conocido como Rijndael, aunque estrictamente hablando AES no es precisamente Rijndael (aunque en la práctica se los llame igual) ya que Rijndael permite un mayor rango de tamaño de bloque y clave; AES tiene un tamaño de bloque fijo de 128 bits y tamaños de llave de 128, 192 ó 256 bits, mientras que Rijndael puede ser especificado por una clave que sea múltiplo de 32 bits, con un mínimo de 128 bits y un máximo de 256 bits.
(+ info: http://www.quadibloc.com/crypto/co040401.htm)
RESUMIENDO:
Lo mas importante a la hora de elejir como encriptar un mensaje (digamos que de forma profesional, con algoritmos contrastados, etc..), es elegir un método atendiendo a las necesidades y a la aplicación que va a tener el cifrado.
Para trabajos de intercambio de grandes cantidades de información, la encriptación asimétrica no es recomendable, a no ser que sea realmente necesario un nivel de seguridad muy alto, y tengamos la posibilidad de poseer unos mega servidores
Pero tb hay casos en los que aunque la cantidad de información, sea escasa, como por ejemplo encriptación de contraseñas, no sea optimo, o si... si necesitamos una autenticacion web que requiera usar este algoritmo, para conexiones multiples concurrentes... bien, podemos tumbar un servidor como haya 5 o 6 usuarios intentandose autenticar a la vez... (aunque luego tengamos procedimientos de hilos y demas para intentar optimizar)
Así que mi opinión personal, y despues de todo lo explicado, y por experiencia, yo siempre he elegido, encriptación simétrica y AES (Rijndael)