Bcrypt usa un conteggio di iterazione configurabile, quindi la risposta alla tua domanda è: qualunque cosa tu voglia essere .
Se il numero di iterazioni è tale che una chiamata di bcrypt costa quanto 10 calcoli di MD5, allora la forzatura bruta della password sarà 10 volte più costosa con bcrypt che con MD5.
Se il numero di iterazioni è tale che una chiamata di bcrypt è costosa come 10 milioni di calcoli di MD5, allora la forzatura bruta della password sarà 10 milioni più costosa con bcrypt che con MD5.
Questo è il punto di avere lentezza configurabile : puoi rendere la funzione lenta come desideri. O, più precisamente, il più lento possibile: infatti, una funzione lenta è lenta per tutti, attaccante e difensore allo stesso modo.
Un altro fattore è che bcrypt è, per sua natura, abbastanza ostile all'ottimizzazione della GPU; questo è dovuto al tipo di operazioni che vengono utilizzate all'interno dell'algoritmo. Al confronto, MD5 è molto facile da implementare ed eseguire in modo efficiente su una GPU. Ciò significa che un utente malintenzionato può ottenere un sostanziale aumento di una GPU durante la violazione delle password protette da MD5; mentre con bcrypt avrà bisogno di usare lo stesso tipo di CPU del difensore. Vedi questa risposta per ulteriori dettagli.
Se vogliamo alcune cifre realistiche: con una buona GPU (disponibile in commercio, poche centinaia di dollari), la velocità MD5 può raggiungere, per esempio, 10 miliardi di istanze al secondo (vedi benchmark there ; la macchina che arriva a 93 miliardi al secondo contiene 8 GPU). Tuttavia, con bcrypt, sarebbe consuetudine eseguire il conteggio del numero di iterazioni in modo che ogni hashing richieda 0,1 s sul server. Invece di acquistare una GPU, l'hacker acquisterà (o noleggerà) un paio di CPU multi-core e sarà in grado di provare, ad esempio, 100 password al secondo. Con queste cifre, si può dire che bcrypt renderà le password 100 milioni di volte più robuste di MD5.