Здравствуйте, wildwind, Вы писали:
W>А можно ссылку или своими словами, из каких соображений?
Ссылку
можно, в соображения не вникал особо.
Правда, как оказалось, интел весьма разнообразен:
https://ssl.intel.com/reg-app/popup.aspx?Popuptype=PWD-RULES-PRIV&Lang=ENG
https://ssl.intel.com/reg-app/popup.aspx?Popuptype=PWD-RULES-CONF
https://software.intel.com/sites/default/files/m/d/0/7/a/5/16954-password_guidelines.pdf
Вобщем, сейчас проверочный код такой:
private static readonly HashSet<char> _allowedPwdChars =
new HashSet<char>
{
'`', '!', '@', '$', '%', '^', '&', '*', '(', ')', '-', '_', '=', '+', '[', ']', ';', ':', '"', '<', '.', '>',
'/', '?', '#'
};
private static Task<string> CheckPwd(string pwd, string login, string email)
{
return
Task.Run(
() =>
{
if (pwd == null || pwd.Length < 8)
return "Пароль должен быть не короче 8 символов";
var invalidChar = pwd.FirstOrDefault(c => !char.IsLetter(c) && !char.IsDigit(c) && !_allowedPwdChars.Contains(c));
if (invalidChar != default (char))
return "Символ '{0}' в пароле недопустим".Args(invalidChar);
var cmp = StringComparer.OrdinalIgnoreCase;
if (cmp.Equals(pwd, login))
return "Пароль не может совпадать с логином";
if (cmp.Equals(pwd, email))
return "Пароль не может совпадать с почтовым адресом";
return null;
});
}
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>