Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Question
Wednesday, May 4, 2011 10:57 AM
Hii all!!
Well i want to know about how to check for the password entered by the user in a textbox??
When a user enters some characters in textbox, i want to show a label which will tell about the strength of password, that is it strong, weak , poor...
can any one suggest me some code..
I had googled for it.. & found a class file, but on building that class file an error is occuring..
Errors are:
1 Cannot implicitly convert type 'System.Text.RegularExpressions.Match' to 'bool'
2 Operator '&&' cannot be applied to operands of type 'System.Text.RegularExpressions.Match' and 'System.Text.RegularExpressions.Match'
the class file is here::
public class PasswordAdvisor
{
enum PasswordScore
{
Blank = 0,
VeryWeak = 1,
Weak = 2,
Medium = 3,
Strong = 4,
VeryStrong = 5
}
public static PasswordScore CheckStrength(string password)
{
int score = 1;
if (password.Length < 1)
return PasswordScore.Blank;
if (password.Length < 4)
return PasswordScore.VeryWeak;
if (password.Length >= 6)
score++;
if (password.Length >= 12)
score++;
if (Regex.Match(password, @"/\d+/", RegexOptions.ECMAScript))
score++;
if (Regex.Match(password, @"/[a-z]/", RegexOptions.ECMAScript) &&
Regex.Match(password, @"/[A-Z]/", RegexOptions.ECMAScript))
score++;
if (Regex.Match(password, @"/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript))
score++;
return (PasswordScore)score;
}}
All replies (7)
Wednesday, May 4, 2011 11:12 AM ✅Answered | 3 votes
using System.Text;
using System.Text.RegularExpressions;
public enum PasswordScore
{
Blank = 0,
VeryWeak = 1,
Weak = 2,
Medium = 3,
Strong = 4,
VeryStrong = 5
}
public class PasswordAdvisor
{
public static PasswordScore CheckStrength(string password)
{
int score = 1;
if (password.Length < 1)
return PasswordScore.Blank;
if (password.Length < 4)
return PasswordScore.VeryWeak;
if (password.Length >= 8)
score++;
if (password.Length >= 12)
score++;
if (Regex.Match(password, @"/\d+/", RegexOptions.ECMAScript).Success)
score++;
if (Regex.Match(password, @"/[a-z]/", RegexOptions.ECMAScript).Success &&
Regex.Match(password, @"/[A-Z]/", RegexOptions.ECMAScript).Success)
score++;
if (Regex.Match(password, @"/.[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]/", RegexOptions.ECMAScript).Success)
score++;
return (PasswordScore)score;
}
}
Thanks, A.m.a.L [MVP Visual C#] Dot Net Goodies |
|
Don't hate the hacker, hate the code |
Wednesday, May 4, 2011 3:53 PM ✅Answered | 4 votes
Check this out:
enum PasswordScore
{
Blank = 0,
VeryWeak = 1,
Weak = 2,
Medium = 3,
Strong = 4,
VeryStrong = 5
}
private static PasswordScore CheckingPasswordStrength(string password)
{
int score = 1;
if (password.Length < 1)
return PasswordScore.Blank;
if (password.Length < 4)
return PasswordScore.VeryWeak;
if (password.Length >= 8)
score++;
if (password.Length >= 12)
score++;
if (Regex.IsMatch(password, @"[0-9]+(\.[0-9][0-9]?)?", RegexOptions.ECMAScript)) //number only //"^\d+$" if you need to match more than one digit.
score++;
if (Regex.IsMatch(password, @"^(?=.*[a-z])(?=.*[A-Z]).+$", RegexOptions.ECMAScript)) //both, lower and upper case
score++;
if (Regex.IsMatch(password, @"[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]", RegexOptions.ECMAScript)) //^[A-Z]+$
score++;
return (PasswordScore)score;
}
Mitja
Wednesday, May 4, 2011 11:13 AM | 2 votes
Based on a quick look. I think you should call IsMatch() instead of Match().
Your only interested if the string contains some characters and not in the matched characters.
Wednesday, May 4, 2011 11:46 AM | 1 vote
Check this Password Strength Sample
http://www.codeproject.com/KB/miscctrl/PasswordStrengthControl.aspx
Please "Mark as Answer" if this post answered your question. :)
Kalpesh Chhatrala | Software Developer | Rajkot | India
VFP Form to C#, Vb.Net Conversion Utility
Wednesday, May 4, 2011 3:07 PM
Hay Gr8 answer....Thanks
Md. Marufuzzaman Don't forget to click [Vote] / [Good Answer] on the post(s) that helped you.
I will not say I have failed 1000 times; I will say that I have discovered 1000 ways that can cause failure – Thomas Edison.
Wednesday, May 4, 2011 5:47 PM
@Mitja, no need to use ECMAScript for the expressions, ECMAScript is usually slower than a regularly typed expression.
It would make sure the expressions can be interchanged between Javascript and .NET.
Saturday, August 11, 2012 3:54 AM
using Mitja and Jesse suggestions:
I implemented the following in mine application:
public enum PasswordScore{ Blank = 0, VeryWeak = 1, Weak = 2, Medium = 3, Strong = 4, VeryStrong = 5}public static PasswordScore CheckStrength(string password){ int score = 1; if (password.Length < 1) return PasswordScore.Blank; if (password.Length < 4) return PasswordScore.VeryWeak; if (password.Length >= 8) score++; if (password.Length >= 12) score++; if (Regex.IsMatch(password, @"[0-9]+(\.[0-9][0-9]?)?")) //number only //"^\d+$" if you need to match more than one digit. score++; if (Regex.IsMatch(password, @"^(?=.*[a-z])(?=.*[A-Z]).+$")) //both, lower and upper case score++; if (Regex.IsMatch(password, @"[!,@,#,$,%,^,&,*,?,_,~,-,£,(,)]")) //^[A-Z]+$ score++; return (PasswordScore)score;}
I hope someone will find it useful as in mine application