Perché la maggior parte delle funzioni di hashing produce hash con caratteri a-f 0-9?

6

Questo è qualcosa che non ho mai capito delle funzioni di hashing. So che algoritmi come whirlpool e blowfish producono entrambi risultati che non seguono questo schema, ma perché è così che la maggior parte fa? È una specie di cosa hardware / software? Se producessero uscite che andavano a-z0-9 invece di a-f0-9, non aumenterebbero la loro complessità?

    
posta Tar 07.10.2012 - 00:18
fonte

2 risposte

19

È solo hex codificato. Un hash md5 a 16 byte può contenere caratteri non stampabili, quindi è codificato in una stringa a 32 caratteri esadecimali.

    
risposta data 07.10.2012 - 00:20
fonte
4

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.

    
risposta data 24.02.2013 - 03:15
fonte

Leggi altre domande sui tag