Les mots de passes ne se décodent pas, car ils ne sont pas chiffrés (
crypter n'est pas français) mais hachés. La particularité du MD5 (ou du SHA, ou tout autre fonction de hachage) est que l'on ne sait pas retrouvé l'original à partir du haché, et que deux originaux ont
très peu de chances de produire le même haché. Lorsque tu entres ton mot de passe, celui-ci est haché et le résultat est comparé à ce qui est enregistré dans le fichier shadow.
Il n'existe que deux moyens de retrouver l'original à partir du haché : soit il faut trouver une faille dans la fonction de hachage utilisée, soit il faut générer le haché de chaines de caractères aléatoires en espérant trouver le bon résultat (c'est-à-dire en brute-forçant).
C'est pour ça qu'un admin peut réinitialiser un mot de passe oublié, mais pas redonner l'ancien. D'ailleurs s'il est capable de retrouver l'ancien, ça veut dire que les mots de passe sont stockés en clair, ce qui est une faille de sécurité de la taille de la fosse des Mariannes…
Pour ce qui est du nombre de caractère, cela vient de fait que ce n'est pas forcément du MD5. La fonction de hachage utilisée est identifié par le chiffre entre dollars au début du champ contenant le mot de passe (« $1$… » pour le MD5, « $6$… » pour du SHA-512).
c.f.
wikipedia (en)