Sì, bcrypt ha una lunghezza massima della password. L' articolo originale contiene questo:
the key argument is a secret encryption key, which can be a user-chosen password of up to 56 bytes (including a terminating zero byte when the key is an ASCII string).
Quindi è possibile dedurre una lunghezza massima della password di input di 55 caratteri (senza contare lo zero finale). Caratteri ASCII, attenzione: un generico carattere Unicode, quando codificato in UTF-8, può usare fino a quattro byte; e il concetto visivo di un glifo può consistere in un numero illimitato di caratteri Unicode. Risparmierai un sacco di preoccupazioni se limiti le tue password ad ASCII semplice.
Tuttavia, vi è una notevole quantità di confusione sul limite effettivo. Alcune persone credono che il limite "56 byte" includa un valore di 4 byte, portando a un limite inferiore di 51 caratteri. Altre persone sottolineano che l'algoritmo, internamente, gestisce le cose come 18 parole a 32 bit, per un totale di 72 byte, quindi è possibile andare a 71 caratteri (o anche 72 se non si gestiscono stringhe con uno zero finale).
Le implementazioni effettive avranno un limite che dipende da ciò che l'implementatore ha creduto e fatto valere in tutte le precedenti. Tutte le implementazioni decenti ti consentiranno almeno 50 caratteri. Oltre a ciò, il supporto non è garantito. Se è necessario supportare password più lunghe di 50 caratteri, è possibile aggiungere un passaggio di hashing preliminare, come discusso in questa domanda (ma, ovviamente, questo significa che non si calcola più" il "bcrypt, ma una variante locale, quindi l'interoperabilità va a scapito) .
Modifica: mi è stato fatto notare che sebbene, dal punto di vista di un crittografo, l' articolo sia il riferimento finale, non è necessariamente il modo in cui i designer Ci ho pensato. L'implementazione "originale" può elaborare fino a 72 byte. A seconda della tua posizione sul formalismo, puoi affermare che l'implementazione è giusta e l'articolo è sbagliato. Ad ogni modo, tale è lo stato attuale delle cose che il mio consiglio rimane valido: se mantieni meno di 50 caratteri, starai bene ovunque. (Naturalmente sarebbe stato meglio se l'algoritmo non avesse una limitazione di lunghezza in primo luogo.)