Я сделал сообщение в блоге, чтобы создать сильный пароль 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)
Какой язык вы пытаетесь программировать это? Не могли бы вы просто использовать уникальную часть GUID? –
Каковы требования этого уникального идентификатора? Можете ли вы просто работать через набор {000000, 000001, ..., 00000A, ..., ZZZZZZ}? –