2012-02-20 170 views
3

我在想C#.NET框架中是否有内置方法来检查代表新用户密码的字符串是否太简单?例如,“1234”或“qwerty”或“33333”等内容太简单了。是否有.net方法检查用户密码是否简单

PS。我明显可以自己编写所有这些代码。我只是好奇,如果有什么内置的平台可以在开始之前为我做到这一点。

+1

不,没有。有一些加密类,虽然这需要密钥在某些条件下,但我认为这是错过了点... – Polity 2012-02-20 10:02:33

+1

另请参见[你如何计算密码的复杂性?](http://stackoverflow.com/questions/392928/how - 你计算密码复杂性)和[检查密码强度的最佳方法是什么?](http://stackoverflow.com/questions/75057/what-is-the-best-way-以检查密码的强度) – Justin 2012-02-20 10:14:06

回答

0

你可以做的是使用正则表达式验证器来确保它包含至少一个特殊字符(或任何你想到的)。

1

有在C#没有内置的方法,但可以方便地设置一个正则表达式的检查:

至少7个字符 至少1个大写字符(AZ) 至少1数字(0-9 ) 至少有一个特殊字符

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

对不起,但是@在字符串前面意味着什么? – ahmd0 2012-02-20 10:15:18

+4

-1为坏政策。它允许许多弱密码,更糟糕的是,它拒绝了许多强密码。例如,它会拒绝我的truecrypt密码,并且它的熵大约为80位。 – CodesInChaos 2012-02-20 10:25:40

+0

@ ahmod0'@'表示逐字字符串文字,它告诉编译器忽略字符串中的转义字符。请阅读http://msdn.microsoft.com/en-us/library/362314fe.aspx了解更多信息。 – 2012-02-20 10:34:29

相关问题