După cum au indicat alții, aceasta nu ar fi o schemă care ar fi conformă celor mai bune practici. Având în vedere că pui această întrebare, aș sugera cu tărie să folosești codul doar pentru practică.
În principiu, puteți hash datele și apoi le puteți cripta. Deoarece hash-ul rămâne confidențial până când cheia este găsită, acest lucru este luat în considerare atunci când vine vorba de protejarea hash-ului și a mesajului text simplu. Cu toate acestea, vă rugăm să rețineți că hash-then-encrypt în sine poate să nu fie sigur; noi in general preferați metode precum encrypt-then-MAC. Personal, aș încerca să folosesc o funcție de derivare a cheii bazată pe parolă și un mod de criptare autentificat, cum ar fi EAX / encrypt-then-HMAC (având grijă și de IV).
De asemenea, este o idee bună să stocați o valoare de verificare a cheii (de exemplu, un MAC peste unele date cunoscute) lângă ea. În acest fel, nu aveți problema că trebuie să încercați să decriptați toată baza de date înainte de a putea verifica dacă parola este corectă. Rețineți că un adversar poate valida dacă parola principală este corectă prin simpla decriptare a câtorva blocuri de date, astfel încât acest lucru nu va oferi niciun avantaj unui posibil atacator, adăugând în același timp experienței utilizatorului.