Il tempo di esecuzione per bcrypt è indipendente dalla lunghezza della stringa di input?

6

Il tempo di esecuzione per bcrypt è indipendente dalla lunghezza della stringa di input?

cioè.

Dovrebbe essere il tempo di esecuzione di

bcrypt.hashpw('input_string', bcrypt.gensalt(12))

e

bcrypt.hashpw('arbitrarily_longer_input_string', bcrypt.gensalt(12))

essere in teoria lo stesso.

Questo è qualcosa che è garantito dall'algoritmo di bcrypt o è specifico per l'implementazione?

    
posta mmcnickle 02.05.2013 - 16:33
fonte

1 risposta

7

Il tempo di esecuzione in bcrypt non dipende dalla dimensione dell'input; internamente, la stringa di input viene inserita in una sequenza di byte a lunghezza fissa e tale sequenza viene quindi utilizzata in tutto l'algoritmo.

Sarebbe un problema se il tempo di esecuzione dipendesse dalle dimensioni dell'input, poiché il parametro "cost factor" è regolato per rendere il tempo di esecuzione più alto possibile. La domanda è pertinente, ma, per fortuna, bcrypt non ha questo specifico punto debole.

Nota: le password di input per bcrypt hanno una dimensione massima di alcune decine di byte. Ci sono modi per aggirarlo che implica un passaggio pre-hashing (tale passaggio richiederebbe un tempo proporzionale alla dimensione della password, ma sarebbe muuuuuch più veloce, quindi il tempo di overhead sarebbe trascurabile, a meno che non si abbia l'abitudine di digitare password di diversi megabyte , che è impressionante ma strano)

    
risposta data 02.05.2013 - 16:55
fonte

Leggi altre domande sui tag