Лучший способ сделать это - создать два свойства для вашего класса сущностей.Один из них будет представлять хешированный пароль, и он будет доступен для чтения / записи, так что EF сможет успешно его обработать.Безопасно предоставлять хешированный пароль в режиме чтения / записи, потому что практически невозможно восстановить открытый текст из хэша.
Второе свойство должно представлять собой открытый текст пароля и должно быть доступно только для записи (и игнорируетсяпо EF).В установщике вы бы хэшировали пароль и сохраняли его в другом свойстве.Доступ к этому методу должен иметь только код, который изменяет пароль пользователя.
Наконец, вы должны создать метод Validate (), который принимает пароль в виде открытого текста, хэширует его, а затем сравнивает его со свойством hash для целей аутентификации.
Используя этот подход, вы можете применить атрибуты проверки (например, регулярное выражение), чтобы применить политику сложности пароля к свойству, доступному только для записи, для привязки в редакторе паролей.Вы также можете использовать свойство только для записи, чтобы генерировать дочерние записи истории паролей, для обеспечения уникальности паролей и изменения политики частоты.
Кроме того, вы должны посолить хэш пароля (я сделал это с GUID пользователя впрошлого), поэтому один и тот же пароль, используемый двумя разными пользователями, не будет иметь одинакового значения хеш-функции.Это можно сделать путем объединения открытого текста пароля с уникальным, но детерминированным значением, связанным с пользователем, перед его хэшированием.