有没有一种 .net 方法可以检查用户密码的简易性?

3
我想知道在C# .NET框架中是否有内置方法可以检查表示新用户密码的字符串是否过于简单?
例如,像“1234”、“qwerty”或“33333”这样的内容就太简单了。
PS. 显然,我可以自己编写代码。 我只是好奇,在开始之前是否有内置于平台中可以为我完成此操作的东西。

1
不,没有。但是有一些加密类需要密钥满足某些条件,但我想这并不是重点... - Polity
4个回答

2

1

在C#中没有内置的方法,但您可以轻松设置一个正则表达式来检查:

至少7个字符 至少1个大写字母(A-Z) 至少1个数字(0-9) 至少一个特殊字符

public static bool IsPasswordStrong(string password)
{
    return Regex.IsMatch(password, @"^.*(?=.{7,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^a-zA-Z0-9]).*$");
}

抱歉,但是在字符串前面的@代表什么意思? - ahmd0
4
不良政策导致了密码设置的问题。这种政策允许使用很多弱密码,更糟糕的是,它会拒绝很多强密码。例如,它会拒绝我的TrueCrypt密码,而该密码的熵约为80位。 - CodesInChaos
@ahmod0 '@' 表示一个逐字字符串字面量,它告诉编译器在字符串中忽略转义字符。点击此处 http://msdn.microsoft.com/en-us/library/362314fe.aspx 了解更多信息。 - James Hull
@Bigfellahull 谢谢你指出来。我也在尝试理解他在那个正则表达式中的意思。既然正则表达式也被用在你的解决方案中,你能否建议一个“好”的正则表达式? - ahmd0
很抱歉,我不能这样做。这完全取决于您的情况。而且我对正则表达式不是很熟悉。我认为最好您提出另一个问题,专门涉及到正则表达式,然后将其与我建议的PasswordStrengthRegularExpression属性一起使用。 - James Hull

0

0
你可以使用正则表达式验证器来确保它至少包含一个特殊字符(或者你心目中的任何其他字符)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接