PDA

View Full Version : سوال: برنامه تشخیص قوی بودن پسورد در سی شارپ



012132
جمعه 13 تیر 1393, 10:41 صبح
سلام . می خوام بدونم چطوری تو سی شارپ می تونم بفهمم که کاربر چه کلید هایی رو زده . یا اینطوری بهتره چطوری بفهمم که کلید های مثلاً a-z و A-Z و 1-9 و کاراکترخاص زده شده ؟
نمی خوام تک تک چک کنم که آیا کلید A فشرده شده ؟ آیا کلید B فشرده شده ؟
اینطوری نمی خوام . می خوام یک کد بنویسم که آیا کلید های بین A تا B فشرده شده ؟ آیا کلید های بین 0 تا 9 فشرده شده ؟
لطفاً راهنماییم کنید

hadi0x7c7
جمعه 13 تیر 1393, 11:50 صبح
شما اگه میخوای پسوورد رو چک کنی، با یه رشته سر و کار داری و برای اینکه چک کنی که کاراکترهای a-z و... درون آن قرار دارن کافیه تک تک کاراکتر های رشته رو چک کنی که بین 'a' یا 'z' و... وجود دارن یا خیر.

shahryari
جمعه 13 تیر 1393, 11:58 صبح
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;
}
}

erfan_urchin
جمعه 13 تیر 1393, 12:07 عصر
شما باید کل متن تکست باکس رو چک کنی که اولا طول رشته ای که وارد شده مثلا بیشتر از 8 کاراکتر هست یا نه
دوما متن تکست باکس رو حرف به حرف چک کنه که چه کاراکتر هایی وارد شده که باید از حروف و عدد و علامت ها یا حتی اسپیس استفاده شده باشه و همچنین توش حداقل یه حرف بزرگ داشته باشه (منظورم از حرف به حرف این نیست که ببینی چه دکمه هایی فشرده شده) یعنی مثلا از همچین کدی استفاده کنی
private void textBox1_TextChanged(object sender, EventArgs e)
{
int check = 0;
if (textBox1.Text.Length > 8)
check++;
for (int i = 0; i < textBox1.Text.Length; i++)
{
if ((textBox1.Text[i] >= ' ' && textBox1.Text[i] <= '/') || (textBox1.Text[i] >= ':' && textBox1.Text[i] <= '@'))
{
check++;
break;
}
}
for (int i = 0; i < textBox1.Text.Length; i++)
{
if (textBox1.Text[i] >= '0' && textBox1.Text[i] <= '9')
{
check++;
break;
}
}
for (int i = 0; i < textBox1.Text.Length; i++)
{
if (textBox1.Text[i] >= 'a' && textBox1.Text[i] <= 'z')
{
check++;
break;
}
}
for (int i = 0; i < textBox1.Text.Length; i++)
{
if (textBox1.Text[i] >= 'A' && textBox1.Text[i] <= 'Z')
{
check++;
break;
}
}
if (check == 1)
label1.Text = "امنیت : ضعیف";
else if (check == 2)
label1.Text = "امنیت : متوسط";
else if (check == 3)
label1.Text = "امنیت : خوب";
else if (check == 4)
label1.Text = "امنیت : خیلی خوب";
else if (check == 5)
label1.Text = "امنیت : عالی";
}