2012-03-11 20 views

risposta

16

Quei hash non sono ASCII-il motivo che si vede cifre esadecimali è perché il software utilizzato per generarli prende l'uscita binaria del digest e lo trasforma in una stringa ASCII di cifre esadecimali.

Ad esempio, il digest MD5 riempie una matrice di 16 byte. Puoi anche rappresentarlo come una stringa di 32 caratteri, ma la forma più elementare del digest è ancora l'array di byte.

Quando si modifica una matrice di byte in una stringa esadecimale, sono necessari 8 bit (un carattere completo) per rappresentare ogni 4 bit di dati. Anche se non viene spesso chiamato in questo modo, si potrebbe dire che questo utilizza la codifica "base16", dal momento che stai acquisendo 4 bit alla volta e li stai mappando su un alfabeto di 16 caratteri.

Base64, d'altra parte, prende 6 bit alla volta e li mappa in un alfabeto di 64 caratteri. Ciò significa che sono necessari 8 bit (di nuovo, un carattere completo) per rappresentare ogni 6 bit di dati, che ha metà dei bit sprecati di base16. Una stringa con codifica Base16 sarà sempre due volte più grande dell'originale; una stringa con codifica Base64 sarà grande solo di quattro terzi. Per un hash SHA256, base16 fa 64 byte, ma base64 fa circa 43.

+0

che risponde alla mia domanda. grazie! – tuna

+0

@zneak È lo spazio efficiente il motivo per utilizzare la codifica Base 64 su un hash. Non è necessario che se abbiamo bisogno di inviare questo hash abbiamo bisogno che l'hash sia rappresentabile come testo e Base64 lo fa limitando i dati binari a un set di 64 personaggi per lo più sovrapposti dalla maggior parte delle codifiche comuni? – crackerplace

+0

@zneak Voglio dire dando l'hash una forma presentabile su qualsiasi computer. – crackerplace

4

Ad esempio, i campioni byte, esagonali e base64 sotto codificano gli stessi byte:

  • byte: 243 48 133 140 73 157 28 136 11 29 189 101 194 101 116 64 172 227 220 78
  • esagonali : f330858c499d1c880b1dbd65c2657440ace3dc4e
  • base64: 8zCFjEmdHIgLHb1lwmV0QKzj3E4=.

È solo che AWS richiede che i suoi valori siano codificati in base64.

+0

Ok, ma ci sono dei vantaggi nell'usare base64 invece di hex? Voglio dire, perché Amazon usa base64 e non hex? – tuna

+1

base64 codifica gli stessi valori in un numero inferiore di caratteri ASCII.E poiché utilizzano anche le firme delle chiavi pubbliche che sono comunemente codificate con base64 nelle loro richieste, potrebbero aver pensato che l'uso della codifica unica per tutti i valori avesse senso. –

Problemi correlati