Perché "\ 000" è stato aggiunto alla fine delle password prima dell'hash con bcrypt?

2

Sto implementando bcrypt per java come trovato qui . Prima che avvenga l'hash effettivo, la riga 455 di questa implementazione prende la password di stringa raw e la trasforma in un array di byte in questo modo:

passwordb = (password + (minor >= 'a' ? "
passwordb = (password + (minor >= 'a' ? "%pre%0" : "")).getBytes("UTF-8");
0" : "")).getBytes("UTF-8");

Quindi quando minor >= 'a' , come sempre è vero per questa implementazione (presumo che questo sia un identificatore di versione?), quindi %code%00 è concatenato alla fine della password prima della sua trasformazione in byte.

Quale scopo aggiunge l'aggiunta di %code% alla password?

    
posta Numeron 15.05.2015 - 10:54
fonte

2 risposte

2

Sei corretto @Numeron, lo scopo di \ 000 è aggiungere un null alla fine del flusso della password (valore NULL o valore END-OF-FILE) poiché il null è un carattere illegale per una password (o qualsiasi input dell'utente per quella materia) viene qui usato per indicare la fine della stringa 'password' (questo è parte del normale comportamento delle stringhe).

il minore che vedi proviene da char minor = (char)0; poche righe in su. questa linea trasmette il valore 0 a un carattere. se l'implementazione java che stai usando interpreta il carattere 0 come 'a' che il '\ 000' (valore NULL) viene aggiunto alla fine della stringa della password poiché molto probabilmente mancherà in quell'implementazione di java. (come su alcuni dispositivi Java Mobile che ho sentito.)

    
risposta data 15.05.2015 - 11:53
fonte
2

Ho continuato la mia indagine ...

\ è un carattere di escape in java, ma una cosa che non ho realizzato è che può sfuggire a più di un personaggio. In questo caso, sfugge a tutti e tre gli zeri, aggiungendo così un carattere NUL alla stringa.

Questo diventa un byte extra alla fine dell'array UTF8, con valore 0 . Questo è presumibilmente utilizzato dall'algoritmo per identificare la fine della password in quanto viene sminuzzata e riorganizzata.

(Questo è sufficiente per rendermi soddisfatto, ma non accetterò la mia risposta per un po 'nel caso qualcuno possa fornire altre / migliori informazioni di questo nella propria risposta)

    
risposta data 15.05.2015 - 11:13
fonte

Leggi altre domande sui tag