密码强制避免常见的单词,如天,月等

时间:2014-06-20 00:51:46

标签: .net validation passwords change-password

我们被要求从客户的系统中添加密码强度验证。他们所要求的只是密码长度至少为8个字符,不包括"日常,月等等常用字词"。

是否有人知道任何涵盖此级别密码强度测试的算法或示例?

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用正则表达式来匹配名称....长度很容易(只需检查长度属性)...这里有一个关于如何捕获它是否有其中一天的示例。

using System.Text.RegularExpressions;

class tester
{
    static void Main()
    {
        string[] NotValid = { "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday",};

        string password = "Monday5";

        bool isvalid = password.Length > 7;
        foreach (string s in NotValid)
            if (Regex.IsMatch(password, "^.*" + s + ".*$", RegexOptions.IgnoreCase))
                isvalid = false;

        if(!isvalid)
             Console.WriteLine("Your password doesn't match our strength requirements");
    }
}

如果您的密码包含NotValid数组中的任何单词,则isValid将为false ...

您可以找到有关c#regex' s here

的更多信息

答案 1 :(得分:0)

为什么不下载任何密码'的文本列表? (也将包括很多很多字典单词)来自互联网。在谷歌搜索单词列表和密码,我相信你会受到好评。

  1. 将列表加载到集合中。
  2. 从用户那里获取密码
  3. 使用LINQ比较传入的'密码不包含在集合中。
  4. 如果是;请求新密码并循环回(2)
  5. 如果不是;使用该密码。
  6. 使用外部列表意味着他们可以动态更新不允许的密码列表 - 而不是像上面的示例中那样对其进行硬编码。