如何使用SQL测试密码强度?
我有一个带密码的遗留表,我需要在SSMS中检查测试密码强度一次并更正它们。
当前系统的要求是:
abcdefg ...
)ABCDEFG ...
)123456 ...
)~!@#$%^& ...
)谢谢
答案 0 :(得分:2)
正如其他人所提到的,这种检查更适合负责将数据写入数据库的应用程序。一个原因是SQL对于高级字符串操作来说是完全可怕的。
但如果你真的必须使用SQL,那么这样的事情应该指向正确的方向:
SELECT Password,
CASE WHEN
Password COLLATE Latin1_General_BIN LIKE '%[a-z]%[a-z]%' AND
Password COLLATE Latin1_General_BIN LIKE '%[A-Z]%[A-Z]%' AND
Password LIKE '%[0-9]%[0-9]%' AND
Password LIKE '%[~!@#$%^&]%[~!@#$%^&]%' AND
LEN(Password) >= 8
THEN 1 ELSE 0 END AS Valid
FROM TableWithPasswords
"有效"如果密码满足CASE语句的条件,则列将包含1,否则为0。如果你想在第4个要求中添加更多特殊字符,请记住正确地逃避它们,根据:http://technet.microsoft.com/en-us/library/ms179859.aspx
注意COLLATE语句 - 这是为了确保对LIKE运算符进行区分大小写的比较。