回答
密碼強度:
首先,我會讀了密碼強度,並仔細檢查你的政策,以確保你正在做正確的事(我不能告訴你了手):
- http://en.wikipedia.org/wiki/Password_strength
- https://www.grc.com/haystack.htm
- http://xkcd.com/936/(開個玩笑,但良好的精神食糧)
然後我會檢查其他問題:
然後,我言歸正傳。
實現:
你可以使用Linq:
return password.Length >= z
&& password.Where(char.IsUpper).Count() >= x
&& password.Where(char.IsDigit).Count() >= y
;
你也可以使用正則表達式(這可能是一個不錯的選擇,讓你插上在未來更復雜的驗證):
return password.Length >= z
&& new Regex("[A-Z]").Matches(password).Count >= x
&& new Regex("[0-9]").Matches(password).Count >= y
;
或者你可以混合和匹配它們。
如果你有這個多次做,你可以通過建立一個類重用Regex
實例:
public class PasswordValidator
{
public bool IsValid(string password)
{
return password.Length > MinimumLength
&& uppercaseCharacterMatcher.Matches(password).Count
>= FewestUppercaseCharactersAllowed
&& digitsMatcher.Matches(password).Count >= FewestDigitsAllowed
;
}
public int FewestUppercaseCharactersAllowed { get; set; }
public int FewestDigitsAllowed { get; set; }
public int MinimumLength { get; set; }
private Regex uppercaseCharacterMatcher = new Regex("[A-Z]");
private Regex digitsMatcher = new Regex("[a-z]");
}
var validator = new PasswordValidator()
{
FewestUppercaseCharactersAllowed = x,
FewestDigitsAllowed = y,
MinimumLength = z,
};
return validator.IsValid(password);
+1,對於一個單行的答案,但你的力氣提供了這個數字計數.. –
@SaiKalyanAkshinthala:現在修復。我在擴展我的答案時看到了我的錯誤:) –
感謝您的詳細解答!非常有幫助 – SexyMF
要計算大寫字母和數字:
string s = "some-password";
int upcaseCount= 0;
int numbersCount= 0;
for (int i = 0; i < s.Length; i++)
{
if (char.IsUpper(s[i])) upcaseCount++;
if (char.IsDigit(s[i])) numbersCount++;
}
,並檢查s.Length
的長度
好運!
+1,簡單但完美的答案。 –
簡短而明確的使用LINQ Where() method:
int requiredDigits = 5;
int requiredUppercase = 5;
string password = "SomE TrickY PassworD 12345";
bool isValid = password.Where(Char.IsDigit).Count() >= requiredDigits
&&
password.Where(Char.IsUpper).Count() >= requiredUppercase;
+1,用於描述Where()方法。 –
這應該這樣做:
public bool CheckPasswordStrength(string password, int x, int y, int z)
{
return password.Length >= z &&
password.Count(c => c.IsUpper(c)) >= x &&
password.Count(c => c.IsDigit(c)) >= y;
}
- 1. Firebase身份驗證:密碼必須包含大寫字母
- 2. 驗證密碼包含字母
- 3. ASP驗證器:僅驗證小寫字母和大寫字母
- 4. Excel數據驗證號碼,字母,數字(大寫字母)
- 5. 驗證密碼字段是否包含特殊字符
- 6. C#字母數字密碼驗證?
- 7. 驗證該字符串是否僅包含字母
- 8. 檢查字符串中是否包含大寫字母「inside」
- 9. 檢查密碼包含字母,數字和特殊字符
- 10. 大寫字母的COBOL數據驗證?
- 11. C++循環和scanf驗證字母表,大寫字母和數字
- 12. 如何檢測字符串是否包含PHP中的1個大寫字母
- 13. 生成包含數字和字母的隨機密碼
- 14. 密碼驗證(有字母數字和特殊){8}
- 15. 如何驗證字符串是否爲字母數字
- 16. VB.Net驗證:檢查文本是否僅包含字母
- 17. 匹配小寫字母正好包含三個大寫字母
- 18. php查詢(小寫字母/大寫字母)驗證
- 19. 如何驗證字符串是否包含某些字符?
- 20. 驗證密碼字段是否爲空
- 21. Validator檢查密碼是否至少包含1個字母或數字
- 22. 檢查一個字符串是否包含數字和字母
- 23. Java:驗證文本字段輸入是否僅包含字母字符
- 24. 是否有更簡單的方法來檢查密碼是否包含大寫字母
- 25. 密碼驗證 - 至少一個大寫,一個小寫字母和一個數字
- 26. 如何驗證字段僅包含字母?
- 27. JQuery - 確認密碼包含非字母數字字符
- 28. Jquery驗證插件密碼包含至少10個字符,1個數字或標點符號,1個大寫和1個小寫字母。
- 29. 如何定位包含所有大寫字母的字符串?
- 30. 編寫一個方法來查看字符串x是否包含字母「G」
+1,有用的問題。 –
我會使用一些標準的pwd驗證規則可能與RegEx,而不是字符char解析...看到這一個:http://stackoverflow.com/questions/1152872/creating-a-regex-to-check-for-a -strong-password –