PWDCOMPARE(Transact-SQL)
암호를 해시하고 해당 해시를 기존 암호의 해시와 비교합니다. 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 이상으로 마이그레이션되었지만 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 권한이 필요합니다.
예
1.암호가 없는 로그인 식별
다음 예에서는 암호가 없는 SQL Server 로그인을 식별합니다.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('', password_hash) = 1 ;
2.일반적인 암호 검색
식별하여 변경할 일반적인 암호를 검색하려면 암호를 첫 번째 매개 변수로 지정합니다. 예를 들어 password로 지정된 암호를 검색하려면 다음 문을 실행합니다.
SELECT name FROM sys.sql_logins
WHERE PWDCOMPARE('password', password_hash) = 1 ;