Для хэширования паролей также необходимо использовать соль, иначе возможны атаки по словарю, и два пользователя, выбравшие один и тот же пароль, будут иметь один и тот же хешированный пароль, хранящийся в БД.
Я бы предложил следующее:Просто используйте PKCS # 5 дважды;один раз, чтобы сгенерировать хешированный пароль (который вы храните в открытом виде), и один раз, чтобы сгенерировать ключ шифрования (который вы не делаете).
Убедитесь, что соли большие, случайные и независимые, а затемне будет обнаружимой связи между хэшем пароля и ключом шифрования.В конце концов, для этого и нужна соль.
[обновить, чтобы немного уточнить]
Выберите две соли s1 и s2.Убедитесь, что каждый из них содержит как минимум 64 бита, случайный и независимый.
Используйте пароль + s1 в качестве ввода для HCSAC PKCS # 5 в пустой строке.Это «хешированный пароль».
Используйте пароль + s2 в качестве входных данных для схемы шифрования PKCS # 5 для шифрования фактических данных.
Сохраните хешированный пароль, s1 и s2 вясно в базе данных.Готово.