我们被要求从客户的系统中添加密码强度验证。他们所要求的只是密码长度至少为8个字符,不包括"日常,月等等常用字词"。
是否有人知道任何涵盖此级别密码强度测试的算法或示例?
谢谢
答案 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)
为什么不下载任何密码'的文本列表? (也将包括很多很多字典单词)来自互联网。在谷歌搜索单词列表和密码,我相信你会受到好评。
使用外部列表意味着他们可以动态更新不允许的密码列表 - 而不是像上面的示例中那样对其进行硬编码。