Я бы не рекомендовал HMACSHA1 для хранения паролей базы данных, но установка ключа, совпадающего с паролем, ослабляет полезность ключа для этой цели.Предполагается, что ключ является секретным и используется для определения того, изменились ли базовые хешированные данные.
Для паролей следует использовать комбинацию SALT + Password для повышения безопасности алгоритмов HASH.Я обычно использую соль, уникальную для пользователя, но не совпадающую с паролем, например, номер пользователя или IP-адрес начальной регистрации.
Кроме того, имейте в виду, что SHA1 больше не рекомендуется в качествеалгоритм хэширования.
Для более ясного понимания можно ссылаться на MSDN .
Это свойство является ключом для алгоритма хеширования с ключами.
Код аутентификации сообщений на основе хеша (HMAC) может использоваться для определения того, было ли подделано сообщение, отправленное по незащищенному каналу, при условии, что отправитель и получатель совместно используют секретный ключ.Отправитель вычисляет значение хеш-функции для исходных данных и отправляет как исходные данные, так и HMAC в виде одного сообщения.Получатель повторно вычисляет значение хеш-функции в полученном сообщении и проверяет, соответствует ли вычисленное значение хеш-функции переданному хеш-значению.
HMAC можно использовать с любой итеративной криптографической хеш-функцией, такой как MD5 или SHA-1, в сочетаниис секретным общим ключом.Криптографическая стойкость HMAC зависит от свойств базовой хэш-функции.
Любое изменение данных или значения хеш-функции приводит к несоответствию, поскольку знание секретного ключа требуется для изменения сообщения и воспроизведенияправильное хэш-значение.Поэтому, если исходные и вычисленные значения хеша совпадают, сообщение аутентифицируется.