Le MD5 fait partie de la famille des condensats qui sont conçues pour qu'on ne puisse pas fabriquer de collisions. Et c'est mort de ce coté, on sait en fabriquer aujourd'hui. Si tu ne veux pas avoir cette "garantie", tu n'as aucun intérêt à utiliser MD5, un CRC peut être suffisant, et beaucoup moins lourd en calculs. Et c'est pareil pour les tables de hashages, MD5 n'est pas utilisé dans ce cas, et n'a aucun intérêt.
Non vraiment, MD5 est une mauvaise idée pour faire un nouveau logiciel ou lancer un nouveau projet.
Comme je disais,
les fonctions de hachage cryptographiques ont de nombreuses applications et la plus fragile (par rapport à une vulnérabilité du hash) est la signature électronique de données potentiellement hostiles, ce que les autorités de certification TLS font.
Pour la signature électronique, il ne faut pas qu'on puisse fabriquer a,b tel que a != b et h(a) = h(b). Surtout si on peut les fabriquer respectant une certaine syntaxe, avec l'entête qui va bien et une différence limitée à certaines parties (que la syntaxe ne contraint pas).
Donc pour les certificats cryptographiques, tu ne peux pas utiliser MD5.
Mais pour de nombreux usages, notamment les usages en rapport avec les mdp, ça n'a guère d'importance : dans HTTP Digest, pourquoi et par quoi remplacer MD5?
Si je définis hp une fonction de hachage d'un mdp comme
hp = md5^1000
c'est à dure md5 appliqué 1000 fois, il n'y a aucun moyen connu de calculer hp meilleur que cela là. Donc personne ne peut calculer hp plus vite que ça, etc.
Ce sont des exemples simples, mais il y a d'autres contexte où l'usage de MD5 n'est pas un problème.