PWDCOMPARE (Transact-SQL)
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
雜湊密碼並將該雜湊與現有密碼的雜湊相比較。 PWDCOMPARE 可用於搜尋空白的 SQL Server 登入密碼或一般弱式密碼。
語法
PWDCOMPARE ( 'clear_text_password'
, password_hash
[ , version ] )
引數
' clear_text_password '
這是未加密的密碼。 clear_text_password is sysname (nvarchar(128))。
password_hash
這是密碼的加密雜湊。 password_hash 為 varbinary(128)。
version
若登入中的 password_hash 代表 SQL Server 2000 (8.x) (已移轉到 SQL Server 2005 (9.x) 或更新版本) 之前的值,但從未轉換至 SQL Server 2000 (8.x) 系統,就可以將已經過時的值設定為 1。 version 為 int。
警告
提供這個參數是為了回溯相容性,因為密碼雜湊 BLOB 現在包含自己的版本說明,所以會忽略它。 SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。
傳回型別
int
若 clear_text_password 的雜湊符合 password_hash 參數,則傳回 1;否則傳回 0。
備註
PWDCOMPARE 函數並不會對密碼雜湊強度造成威脅,因為可以使用當做第一個參數提供的密碼嘗試登入來執行相同的測試。
PWDCOMPARE 無法與自主資料庫使用者的密碼搭配使用。 沒有任何自主資料庫對等項目。
權限
PWDENCRYPT 可以公開使用。
若要檢查 sys.sql_logins 的 password_hash 數據行:
- 針對 SQL Server 2019 (15.x) 和舊版, 需要 CONTROL SERVER 許可權。
- 針對 SQL Server 2022 (16.x) 和更新版本, 需要 VIEW ANY CRYPTOGRAPHICALLY SECURED DEFINITION 許可權。
範例
A. 識別沒有密碼的登入
下列範例會分辨不具密碼的 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 ;
相關內容
PWDENCRYPT (Transact-SQL)
安全性函數 (Transact-SQL)
sys.sql_logins (Transact-SQL)