PWDCOMPARE (Transact-SQL)
对密码执行哈希操作并将该哈希与现有密码的哈希进行比较。 PWDCOMPARE 可用于搜索空的 SQL Server 登录密码或常见的弱密码。
适用范围:SQL Server(SQL Server 2008 到当前版本)。 |
语法
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 2000(已迁移到 SQL Server 2005 或更高版本但从未转换为 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 ;