PWDCOMPARE (Transact-SQL)

雜湊密碼並將該雜湊與現有密碼的雜湊相比較。 PWDCOMPARE 可用於搜尋空白的 SQL Server 登入密碼或一般弱式密碼。

適用於:SQL Server (SQL Server 2008 至目前版本)。

主題連結圖示 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
    如果 password_hash 代表的登入值早於已經移轉到 SQL Server 2005 或更新版本,但從未轉換為 SQL Server 2000 系統的 SQL Server 2000,則是可以設定為 1 的過時參數。 version 是 int。

    警告

    提供這個參數是為了回溯相容性,因為密碼雜湊 BLOB 現在包含自己的版本說明,所以會忽略它。下一版的 Microsoft SQL Server 將不再提供此功能。請勿在新的開發工作中使用此功能,並且儘速修改使用此功能的應用程式。

傳回類型

int

如果 clear_text_password 的雜湊符合 password_hash 參數,便傳回 1,如果不符合,則傳回 0。

備註

PWDCOMPARE 函數並不會對密碼雜湊強度造成威脅,因為可以使用當做第一個參數提供的密碼嘗試登入來執行相同的測試。

PWDCOMPARE 無法搭配自主資料庫使用者的密碼使用。 沒有任何自主資料庫對等項目。

權限

PWDENCRYPT 可供 public 使用。

若要檢查 sys.sql_logins 的 password_hash 資料行,需要有 CONTROL SERVER 權限。

範例

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)