Come altri hanno risposto, le funzioni di hash (tutte, incluso MD5, SHA-256, Whirlpool e dozzine di altre funzioni) producono bit . L'output di MD5 è di 128 bit. Tuttavia, gli umani non sono bravi a leggere i bit. Gli umani sono bravi a leggere personaggi . Quindi, quando un output di funzione hash è pensato per il consumo umano, viene convertito in caratteri con qualche codifica.
Esadecimale è una delle più semplici codifiche di bit nei caratteri. Converte un blocco di quattro bit in una cifra o un carattere nell'intervallo da 'a' a 'f'. Esistono altre codifiche, ad es. Base64 , che utilizza un alfabeto più grande (64 segni anziché 16) ed è più compatto (l'output a 128 bit di MD5 è codificato come 24 caratteri in Base64, vs 32 in esadecimale), ma è un po 'più complesso da implementare.
Ci sono molte varianti possibili con esadecimale; per esempio. possiamo aggiungere alcuni spazi ogni pochi caratteri (per facilitare la lettura), o altri segni di punteggiatura come i segni dei due punti (':'); possiamo usare lettere maiuscole o minuscole. Tradizione per gli output delle funzioni hash è quello di utilizzare lettere minuscole senza spazio o segni di punteggiatura. Questa tradizione era già in vigore nell'infanzia di MD5: MD5 è stato progettato nel 1991, pubblicato nell'aprile del 1992 come RFC 1321 ; come puoi vedere in quel documento (vicino alla fine, sezione A.5), le uscite hash usano già l'esadecimale minuscolo.