PWDCOMPARE(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
암호를 해시하고 해당 해시를 기존 암호의 해시와 비교합니다. PWDCOMPARE를 사용하여 빈 SQL Server 로그인 암호 또는 일반적인 약한 암호를 검색할 수 있습니다.
구문
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(9.x) 이상으로 마이그레이션되었지만 SQL Server 2000(8.x) 시스템으로 변환되지 않은 SQL Server 2000(8.x) 이전의 로그인 값을 나타내는 경우 1로 설정할 수 있으며 사용되지 않는 매개 변수입니다. 버전은 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)