PWDCOMPARE (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Hashar ett lösenord och jämför hashen med hashen för ett befintligt lösenord. PWDCOMPARE kan användas för att söka efter tomma SQL Server-inloggningslösenord eller vanliga svaga lösenord.

Transact-SQL syntaxkonventioner

Syntax

PWDCOMPARE ( 'clear_text_password'  
   , password_hash   
   [ , version ] )  

Arguments

'clear_text_password'
Det är det okrypterade lösenordet. clear_text_password är sysname (nvarchar(128)).

password_hash
Är krypteringshashen av ett lösenord. password_hash är varbinär(128).

version
Föråldrad parameter som kan sättas till 1 om password_hash representerar ett värde från en inloggning tidigare än SQL Server 2000 (8.x) som migrerades till SQL Server 2005 (9.x) eller senare men aldrig konverterades till SQL Server 2000 (8.x)-systemet. versionen är int.

Försiktighet

Denna parameter tillhandahålls för bakåtkompatibilitet, men ignoreras eftersom lösenordshash-blobs nu innehåller egna versionsbeskrivningar. Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen.

Returtyper

int

Returnerar 1 om hashen för clear_text_password matchar parametern password_hash , och 0 om den inte gör det.

Anmärkningar

PWDCOMPERATE-funktionen utgör inget hot mot styrkan hos lösenordshashar eftersom samma test kan utföras genom att försöka logga in med det lösenord som anges som första parameter.

PWDCOMPARE kan inte användas med lösenord från användare av den inneslutna databasen. Det finns ingen motsvarande motsvarande inneslutna databaser.

Permissions

PWDENCRYPT är tillgängligt för allmänheten.

För att undersöka password_hash kolumnen sys.sql_logins:

  • För SQL Server 2019 (15.x) och tidigare versioner krävs behörigheten CONTROL SERVER .
  • För SQL Server 2022 (16.x) och senare versioner krävs behörigheten VIEW ANY CRYPTOGRAPHICALLY SECURED DEFINITION .

Examples

A. Identifiera inloggningar som saknar lösenord

Följande exempel identifierar SQL Server-inloggningar som saknar lösenord.

SELECT name FROM sys.sql_logins   
WHERE PWDCOMPARE('', password_hash) = 1 ;  

B. Sökning efter vanliga lösenord

För att söka efter vanliga lösenord som du vill identifiera och ändra, ange lösenordet som första parameter. Till exempel, kör följande sats för att söka efter ett lösenord som specificeras som password.

SELECT name FROM sys.sql_logins   
WHERE PWDCOMPARE('password', password_hash) = 1 ;  

PWDENCRYPT (Transact-SQL)
Säkerhetsfunktioner (Transact-SQL)
sys.sql_logins (Transact-SQL)