/ Používanie blowfish v CBC režime pre šifrovanie a dešifrovanie, ale ako postupovať s IV? java, šifrovanie, kryptografia

Použitie blowfish v režime CBC pre šifrovanie a dešifrovanie, ale ako postupovať s IV? java, šifrovanie, kryptografia

Mám používateľské rozhranie na pridávanie / upravovanie hesla. Tieto heslá sú zašifrované pomocou funkcie Blowfish v režime CBC a fungovalo to dobre, ale počas dešifrovania to vyžadovalo IV (vynechalo parameter, ktorý chýbal výnimku.)

Použil som šifrovú triedu pri iniciovaní šifry, takže by sa pri šifrovaní staralo o IV.

Takže moja pochybnosť je,

  1. ak je IV rovnaké pre šifrovanie aj pre šifrovaniedešifrovanie? Čítal som na niektorých stránkach, že zatiaľ čo dešifrovanie, ak budeme používať nesprávne IV prvý blok bude nesprávny, ale zostávajúce bloky by boli správne. Mohli by ste to vysvetliť?

  2. Ak je IV (v prípade šifrovania a dešifrovania pomocou rovnakého IV) uložené, malo by byť uložené ako obyčajný objekt alebo šifrované spolu s heslom pomocou nejakého oddeľovača? Ktoré budú bezpečnejšie?

Vopred ďakujem.

odpovede:

2 pre odpoveď č. 1
  1. Áno, IV by mal byť rovnaký pre šifrovanie / dešifrovanie. V CBC, ak si správne spomínam, chyby kaskádou nadol bloky. Takže celá správa bude zle, ak použijete nesprávnu IV.
  2. IV môže byť uložená v otvorenom texte. Ak sa pokúsite uložiť šifrované, skončíte potrebou uložiť IV používané na šifrovanie IV ...

Vo všeobecnosti sa však považuje za zlú prax uložiť heslá v šifrovanej forme. Ak by vás niekto musel načítať, stačí nájsť iba jeden kľúč na obnovenie všetkých hesiel.

Odporúčaný spôsob ukladania hesiel je použitiehash funkciu niekoľkokrát, tiež známy ako PBKDF (založená na hesle kľúčové funkcie odvodenie), buď na základe prostého hash, alebo na funkcii hmac. Pozrite si OWASP heslo pre uloženie cheatsheet.

Existujú primitívne prvky v jave, viď príklad na tejto stránke, (Vyhľadajte algoritmus Hashing pomocou hesla a prejdite nadol na implementáciu javy.)