Bcrypt restituisce un risultato a 192 bit, né più né meno. Questo è un inconveniente se si desidera una chiave più lunga di 192 bit, ad es. una chiave AES a 256 bit. In questa situazione, ti consiglio di prendere l'output bcrypt e di eseguirne l'hashing con una funzione hash sicura con un output sufficientemente grande per la lunghezza del materiale chiave richiesta (ad esempio se hai bisogno di una chiave di crittografia a 256 bit e a 128 -bit tasto MAC, utilizzare SHA-384 o SHA-512). Altrimenti, bcrypt è considerato valido per quanto riguarda la derivazione della chiave.
(Generare una chiave di crittografia a 256 bit da un valore di 192 bit non ha molto senso, ma usare AES a 256 bit invece di AES a 128 bit non ha molto senso, praticamente parlando. il sistema bcrypt-powered, in ogni caso, è che le chiavi provengono da una password memorizzata dall'uomo, bcrypt rende tollerabile , ma neanche lontanamente sicuro come una chiave a 128 bit veramente casuale, tanto meno un Chiave a 192-bit o 256-bit. Quindi se hai bisogno di una chiave a 256-bit per "ragioni amministrative", generando quella dall'output di bcrypt e una funzione di hash non creerebbe alcun problema di sicurezza reale aggiuntivo.)
Bcrypt ha un piccolo inconveniente in quanto se dividi un output di bcrypt a 192 bit in tre valori a 64 bit, è matematicamente garantito che i tre valori a 64 bit saranno distinti l'uno dall'altro. Quindi, l'output di bcrypt può essere distinto da quello di un oracolo casuale esaminando circa 2 64 uscite distinte di bcrypt (per valori casuali di 192 bit, ci si potrebbe aspettare di incontrare una collisione di blocco - due dei tre valori a 64 bit uguali tra loro - dopo una media di 2 valori 64 / 3). Questo è un pregiudizio molto leggero che non ha conseguenze pratiche per la sicurezza.