Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применимо к:SQL Server
База данных
SQL AzureУправляемый экземпляр
SQL AzureБаза данных SQL в Microsoft Fabric
Хэширует пароль и сравнивает хэш с хэшем существующего пароля. PWDCOMPARE можно использовать для поиска пустых паролей для входа SQL Server или распространенных слабых паролей.
Соглашения о синтаксисе Transact-SQL
Синтаксис
PWDCOMPARE ( 'clear_text_password'
, password_hash
[ , version ] )
Аргументы
'clear_text_password'
Незашифрованный пароль. Аргумент clear_text_password имеет тип sysname (nvarchar(128)).
password_hash
Хэш шифрования пароля. Аргумент password_hash имеет тип varbinary(128).
version
Устаревший параметр, который может быть задан в значение 1, если password_hash представляет значение из имени входа до SQL Server 2000 (8.x), перенесенного в SQL Server 2005 (9.x) или более поздней версии, но никогда не преобразован в систему SQL Server 2000 (8.x). Аргумент version имеет тип int.
Внимание
Этот параметр предусмотрен для обратной совместимости, но игнорируется, поскольку хеш-блоки паролей теперь содержат собственные версии. Эта функция будет удалена в будущей версии SQL Server. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.
Типы возвращаемых данных
int
Возвращает значение 1, если хэш параметра clear_text_password совпадает со значением параметра password_hash, или значение 0 в противном случае.
Замечания
Функция PWDCOMPARE — это не угроза устойчивости хэшей паролей, потому что этот же самый тест можно было бы выполнить, если попытаться использовать для входа пароль, заданный как первый параметр.
PWDCOMPARE нельзя использовать с паролями пользователей автономных баз данных. Какой-либо эквивалент для автономной базы данных отсутствует.
Разрешения
Функция PWDENCRYPT общедоступна.
Чтобы проверить столбец password_hash sys.sql _logins:
- Для SQL Server 2019 (15.x) и более ранних версий требуется разрешение CONTROL SERVER .
- Для версий SQL Server 2022 (16.x) и более поздних требуется VIEW разрешение на ЛЮБОЕ КРИПТОГРАФИЧЕСКИ ЗАЩИЩЕННОЕ ОПРЕДЕЛЕНИЕ.
Примеры
А. Выявление имен входа, у которых нет паролей
В следующем примере определяются имена входа SQL Server, у которых нет паролей.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('', password_hash) = 1 ;
B. Поиск распространенных простых паролей
Для поиска распространенных простых паролей, которые требуется выявить и изменить, задайте пароль как первый параметр. Например, можно выполнить следующую инструкцию для поиска пароля, заданного как password.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('password', password_hash) = 1 ;