.net 密码强制避免使用常用词,如天、月等

.net 密码强制避免使用常用词,如天、月等,.net,validation,passwords,change-password,.net,Validation,Passwords,Change Password,一位客户要求我们在系统中添加密码强度验证。他们所要求的只是密码至少有8个字符长,而且不包括“常用词,如天、月等” 是否有人知道任何算法或示例可以涵盖这一级别的密码强度测试 谢谢您可以使用正则表达式来匹配名称。。。。长度很简单(只需检查长度属性即可)。。。下面是一个关于如何抓住它的一天的例子 using System.Text.RegularExpressions; class tester { static void Main() { string[] NotV

一位客户要求我们在系统中添加密码强度验证。他们所要求的只是密码至少有8个字符长,而且不包括“常用词,如天、月等”

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


谢谢

您可以使用正则表达式来匹配名称。。。。长度很简单(只需检查长度属性即可)。。。下面是一个关于如何抓住它的一天的例子

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的更多信息,为什么不下载任何“密码”文本列表(其中还包括许多字典单词)。在谷歌上搜索词表和密码,我相信你会得到很好的点击率

  • 将列表加载到集合中
  • 从用户处获取密码
  • 使用LINQ比较集合中不包含的“传入”密码
  • 如果是,;请求一个新密码并返回(2)
  • 如果不是;使用那个密码

  • 使用外部列表意味着他们可以不断动态更新不允许的密码列表,而不是像上面的示例那样硬编码。

    我使用vb.net,但如果需要,我可以转换。您尝试过我的解决方案吗?我刚刚导入了您需要添加的库(当我打开一个项目时,其他4个库已经在这里)