Modular Crypt Format
La convenzione $id$salt$hash che permette a un hash di password di indicare quale algoritmo lo ha prodotto.
Il crypt() Unix originale conosceva solo DES e un salt di due caratteri. Quando Poul-Henning Kamp scrisse MD5-crypt per FreeBSD nel 1994, gli serviva un modo per distinguere i nuovi hash dai vecchi, e la risposta fu un prefisso: $1$. L'elenco è cresciuto: $2b$ per bcrypt, $5$ e $6$ per SHA-crypt di Ulrich Drepper del 2007, $y$ per yescrypt, oggi predefinito in molte distribuzioni Linux.
Non è uno standard in nessun senso reale, piuttosto un accordo che nessuno ha mai scritto per bene, e ogni algoritmo interpreta i campi in modo leggermente diverso. Svolge comunque il compito importante: /etc/shadow può contenere un misto di algoritmi, e il sistema può aggiornare un hash al successivo accesso dell'utente. Il formato PHC della Password Hashing Competition è un tentativo di mettere ordine, con parametri nominati come $argon2id$v=19$m=65536,t=3,p=4$….