Il formato più comune per gli hash su sistemi Unix ha la forma $ALG$SALT$OUTPUT
dove ALG è un piccolo numero che identifica l'algoritmo, SALT è un sale per hash e OUTPUT è l'output della funzione di hash. SALT e OUTPUT sono codificati in base64.
Algorithm 1 è "MD5 crypt", un costrutto basato sull'iterazione della funzione hash MD5. Questo algoritmo non era (e non è ancora, per quanto ne so) definito da uno standard formale. Era introdotto da Poul-Henning Kamp in FreeBSD nel 1994 .
Le normali API aggiungono un sale. L'implementazione originale ha forzato un sale a 48 bit. Il conteggio delle iterazioni è fisso su 2477, che l'autore ha confrontato per 34 μs su un PC di fascia alta del tempo. Il tuo hash è vuoto, il che è inusuale e ha richiesto allo sviluppatore o all'amministratore che lo ha configurato di ignorare i soliti strumenti e probabilmente chiamare direttamente una funzione di libreria.
Gli attuali sistemi Linux solitamente usano algoritmi 5 e 6 , che sono basati sull'iterazione di SHA-256 e SHA-512 rispettivamente. Questi costrutti sono ampiamente basati sullo stesso principio di PBKDF2 , ma calcolano l'hash iterato in modo diverso.
Puoi trovare una grande quantità di informazioni sugli algoritmi di hash delle password nella documentazione della libreria passlib , e ovviamente la libreria ti dà implementazioni Python. Questo algoritmo è passlib.hash.md5_crypt
.