我写了一篇博文来生成一个强 SQL Server 密码。您可以根据需要进行调整。如需更好格式的博文here.
我们的密码必须每 90 天更改一次。我想自动化这个,听起来很容易做到,但没那么容易。为什么?因为密码有很多规则。
首先,我必须将它存储在 web.config 中。所以没有 XML 特殊字符。
quot "
amp &
apos '
lt <
gt >
接下来,如果在 OLE DB 或 ODBC 连接字符串中使用,密码不能包含以下字符:[] {}() , ; ? * ! @。
最后,强密码必须包含以下至少三个类别的字符:
English uppercase characters (A through Z)
English lowercase characters (a through z)
Base 10 digits (0 through 9)
Nonalphabetic characters (for example: !, $, #, %)
因此,牢记所有这些规则,我创建了一个简单的类。我可以打电话
public class PasswordGenerator
{
private static string CHARS_LCASE = "abcdefgijkmnopqrstwxyz";
private static string CHARS_UCASE = "ABCDEFGHJKLMNPQRSTWXYZ";
private static string CHARS_NUMERIC = "23456789";
private static string CHARS_SPECIAL = "*-+_%/";
private static string CHARS_ALL = CHARS_LCASE + CHARS_UCASE + CHARS_NUMERIC + CHARS_SPECIAL;
public static string GeneratePassword(int length)
{
char[] chars = new char[length];
Random rand = new Random();
for (int i = 0; i < length; i++)
{
switch (i)
{
case 0:
chars[i] = CHARS_LCASE[rand.Next(0, CHARS_LCASE.Length)];
break;
case 1:
chars[i] = CHARS_UCASE[rand.Next(0, CHARS_UCASE.Length)];
break;
case 2:
chars[i] = CHARS_NUMERIC[rand.Next(0, CHARS_NUMERIC.Length)];
break;
case 3:
chars[i] = CHARS_SPECIAL[rand.Next(0, CHARS_SPECIAL.Length)];
break;
default:
chars[i] = CHARS_ALL[rand.Next(0, CHARS_ALL.Length)];
break;
}
}
return new string(chars);
}
}
所以现在我只是简单地将其称为新密码:
PasswordGenerator.GeneratePassword(13)