Как указывали другие, такая схема не будет соответствовать передовой практике. Учитывая, что вы задаете этот вопрос, я настоятельно рекомендую использовать ваш код только для практики.
В принципе, вы можете хэшировать данные, а затем зашифровать их. Поскольку хэш остается конфиденциальным до тех пор, пока не будет найден ключ, это учитывается, когда речь идет о защите хэша и открытого текстового сообщения. Однако обратите внимание, что hash-then-encrypt само по себе может быть небезопасным; мы обычно предпочитают такие методы, как шифрование, затем MAC. Лично я бы попытался использовать функцию получения ключа на основе пароля и аутентифицированный режим шифрования, такой как EAX / encrypt-then-HMAC (также позаботившись о IV).
Также рекомендуется хранить рядом с ним некоторое значение проверки ключа (например, MAC для некоторых известных данных). Таким образом, у вас не будет проблемы, связанной с необходимостью расшифровки всей вашей базы данных, прежде чем вы сможете проверить правильность своего пароля. Обратите внимание, что злоумышленник может проверить правильность мастер-пароля, просто расшифровав несколько блоков данных, так что это не даст большого преимущества потенциальному злоумышленнику, если и даст какое-либо преимущество, но улучшит пользовательский опыт.