După cum sa menționat în comentarii, bcrypt este un hash de parolă și are limitări semnificative în comparație cu o funcție de hash criptografică generală.
Folosirea lui așa cum este intenționat, pentru introducerea parolei, dar cu sare la fel ca și introducerea, este la fel de sigură ca și fără sare deloc. Scopul sării este de a preveni atacurile cu mai multe ținte și de a preveni utilizarea meselor curcubeu. Dacă sarea este aceeași cu cea de intrare, acest lucru permite aceste atacuri, deoarece un atacator știe acum ce sare va fi pentru o anumită parolă țintă.
Folosind-o ca funcție hash generală, se confruntă cu un set complet diferit de probleme, cele mai grave fiind coliziunile. bcrypt are o limită de introducere de 72 de octeți pentru textul de intrare, dacă indexați bucăți mari de date va avea același hash ca și prefixul său de 72 de octeți. bcrypt repetă, de asemenea, intrări scurte până când umple matricea de stare de 72 de octeți, astfel încât o parolă de 18 caractere va avea aceeași ieșire ca parola repetată de 4 ori. Implementările pot pre-hash intrarea cu ceva de genul SHA-512 înainte de a ajunge la bcrypt, ceea ce previne aceste probleme. Deși în acest caz, deși este lentă, ieșirea sa este încă de numai 192 de biți în lungime, ceea ce limitează substanțial rezistența la coliziuni pentru utilizarea în lucruri precum semnăturile digitale.
Cu toate aceste limitări, există în mod clar opțiuni mai bune dacă doriți să încetiniți o funcție hash, cel mai evident este să rulați din nou în mod repetat ieșirea funcției hash. Acest lucru este, de asemenea, mai puțin complex decât bcrypt și vă poate permite să reutilizați funcțiile deja existente atât în software, cât și în hardware. Dacă sunteți îngrijorat să rămâneți blocat într-un lanț hash dintr-un anumit motiv, puteți oricând să adăugați un cuvânt simplu de contor de iterație la intrare.Pentru unele funcții hash parametrizate, puteți crește și numărul de runde interne. Keccak, de exemplu, poate fi extins cu ușurință pentru a folosi mai multe runde, unele implementări care generează chei rotunde algoritmic pot necesita doar schimbarea unei singure linii de cod.