Perché le password hash (esadecimali) sono hash / cookies / .. salvate come stringhe nei database?

3

Mi chiedo perché tutti i database sembrano memorizzare le password hash e i dati esadecimali tipici come char (x) / varchar (x)

MySQL usa latin1_swedish_ci come codifica dei caratteri di default, in cui ogni carattere è composto da 8 bit.

Quando si memorizzano i dati esadecimali come stringhe, si utilizzano solo 4 bit di quegli 8 bit che è possibile utilizzare, in quanto vi sono solo 16 caratteri utilizzabili.

Quindi non vedo qualcosa qui? Esiste un codice di codifica dei caratteri specifico per questo tipo di materiale che utilizza 4 bit per carattere? Oppure alcune aziende stanno effettivamente facendo uso di tutto lo spazio riservato per memorizzare materiale esadecimale, non importa come?

    
posta JonasAnon 08.10.2017 - 19:41
fonte

1 risposta

6

In primo luogo, esadecimale non è realmente un formato di archiviazione ... è un formato di visualizzazione. È possibile scegliere di memorizzare stringhe esadecimali in un database, se lo si desidera, ma la tecnica più naturale (e più comune) è quella di memorizzare i numeri effettivi in un database utilizzando il formato intero numerico nativo del database e quindi formattare i numeri recuperati come esadecimali a scopo di visualizzazione.

Le funzioni di hash restituiscono un set di bit. Tradizionalmente, questi bit sono forniti come esadecimali perché è più facile da leggere rispetto agli zero e a quelli. Inoltre, molti hash contengono un numero maggiore di bit che i tipi numerici nativi possono supportare (MD5 è di 128 bit, ad esempio), e quindi hex è una scelta più naturale. Dato un numero arbitrario di cifre esadecimali, è più semplice e semplice archiviare l'esagono fornito dalla funzione hash.

Ulteriori letture
Perché usiamo l'output esadecimale per le funzioni hash?
Perché la maggior parte delle funzioni di hashing produce hash con caratteri 0-9?

    
risposta data 08.10.2017 - 20:19
fonte

Leggi altre domande sui tag