citlivost pouze na prvních 72 bajtů z hesla, zbytek ignoruje (v případě utf-8 znaků to je jen 36 znaků)
UTF-8 kóduje znaky do 1 až 4 bajtů, přičemž spodní polovina ASCII se kóduje do 1 bajtu. Takže u běžných hesel platí, že počet znaků = počet bajtů. Víc bajtů na znak by bylo třeba u českých znaků s diakritikou – nemám odvahu takové znaky do hesla dávat.
S využitím pepřování, prehashingu a dalších technik se bcrypt stává nebezpečný a vede to k reálným zranitelnostem.
To je problém, že se vždycky někdo rozhodne samo-domo zvýšit bezpečnost, ale nedohlédne, jaké to má souvislosti. K těmhle pokusům teda řadím i bcrypt…
Někdy problém s bezpečnostní nemusí být spojen s objektivní slabostí uvnitř algoritmu, ale s nástrahami, které plynou z jeho použití a tím se celá bezpečnost hroutí jako v případě bcryptu.
Ukládání hesel je z 90 % o použití, algoritmy jsou ta méně podstatná část. Ostatně kdyby se s hesly zacházelo dostatečně bezpečně, není potřeba je na backendu hashovat vůbec. A naopak kdyby se s nimi zacházelo doopravdy bezpečně, backend se nikdy nemůže dozvědět heslo v otevřeném tvaru nebo jeho ekvivalent a nemusel by řešit žádné hashování.