Modular Crypt Format
La convención $id$sal$hash que permite a un hash de contraseña decir qué algoritmo lo generó.
El crypt() original de Unix solo conocía DES y una sal de dos caracteres. Cuando Poul-Henning Kamp escribió MD5-crypt para FreeBSD en 1994 necesitaba distinguir los hashes nuevos de los viejos, y la respuesta fue un prefijo: $1$. La lista ha crecido desde entonces: $2b$ para bcrypt, $5$ y $6$ para el SHA-crypt de Ulrich Drepper de 2007, $y$ para yescrypt, hoy el predeterminado en muchas distribuciones Linux.
No es un estándar en sentido estricto, más bien un acuerdo que nadie llegó a poner por escrito como es debido, y cada algoritmo interpreta los campos a su manera. Aun así cumple lo importante: /etc/shadow puede mezclar algoritmos y el sistema puede actualizar un hash la próxima vez que el usuario inicie sesión. El formato de cadena PHC, salido de la Password Hashing Competition, intenta poner orden con parámetros con nombre como $argon2id$v=19$m=65536,t=3,p=4$….