PDA

View Full Version : ایجاد یک پسوورد جدید(پسوورد تصادفی)



happy65_sh
چهارشنبه 26 فروردین 1388, 13:04 عصر
سلام به همه
من در برنامه ام یه صفحه ورود دارم که از کاربر یوزر و پسووردش را واسه ورود به برنامه می خواهد.حالا یکی از کاربران پسوورد خودش را تغییر داده و فراموش کرده.می خواهم به برنامه ام این امکان را اضافه کنم که اگر کاربری پسووردش را فراموش کرد یه کدی از صفحه ورود دریافت کنه و با یک تماس با پشتیبان برنامه و دادن اون کد بتونم یه پسوورد جدید به اون کاربرم بده تا وارد برنامه بشه و بتونه پسووردش را عوض کنه.
کسی می دونه چه جوری؟؟

kiosksoft
چهارشنبه 26 فروردین 1388, 13:47 عصر
دوست عزیز سوالتون واضح نیست

الگوریتم و روال کار مهمه که خودتون نوشتید , یه کد نویسی میخواد همین ... اگر با تولید پسورد مشکال دارید از کد ذیل استفاده کنید.



private Random rng = new Random();
public string newPassword(int LengthPws)
{
char[] valid = { 'a','7', 'b', '2', 'n','3', 't','5','4','u','8','w','9' ,'s','6','y'};
StringBuilder sb = new StringBuilder("");
for (int i = 0; i < LengthPws; i++)
{
sb.Append(valid[rng.Next(valid.Length)]);
}
return sb.ToString();
}

happy65_sh
شنبه 29 فروردین 1388, 07:52 صبح
سلام
دوست عزیز اتفاقا مشکل من الگوریتمش هست وگرنه با ایجاد پسوورد مشکلی ندارم.
در واقع من نمی دونم چه طور کدی را که از کاربرم گرفته ام راتبدیل به یک پسوورد مناسب برای برنامه ی کاربر بکنم.
میشه یکم هم در مورد کدی که فرستادید توضیح بدبد.ممنون میشم.

happy65_sh
یک شنبه 30 فروردین 1388, 06:48 صبح
یعنی تا به حال هیچ کس همچون کاری نکرده؟؟

amir.khanlari
یک شنبه 30 فروردین 1388, 09:30 صبح
اين مشكل منم هست . دوستان اگه كسي بلده كمك كنه

13601360
یک شنبه 30 فروردین 1388, 09:42 صبح
نمونه برنامه زیاد هست یه نگاه به این لینک (http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&q=password+generator+in+C%23+site%3Acodeproject.co m&btnG=Search)بندازید.
به نظرم از hash استفاده کنی بهتره


http://www.codeproject.com/KB/cs/PasswordGenerator/PasswordGenerator.jpg

happy65_sh
یک شنبه 06 اردیبهشت 1388, 08:12 صبح
دقیقا بهترین راه استفاده از هش کد هست,مثلا بعد از ایجاد یک عدد رندم که دارای طول مشخصی هست (این طول حتما باید مشخص باشه) باانجام یک الگوریتم دلخواه (بااستفاده از ارقام عدد رندم) روی عدد , یک پسوورد جدید به دست می یاد.حالا کافیه توی برنامه هم بایک تابع ساده اون الگوریتم روی عدد رندم انجام بشه وبرنامه نویس چک کنه که اگر پسوورد برابر مقدار بازگشتی اون تابع بود پسوورد پذیرفته می شه.
برای من خیلی جالب بود....

esmaeily-hosein
یک شنبه 06 اردیبهشت 1388, 10:30 صبح
/// <summary>
/// gets a random string
/// </summary>
/// <param name="Length"></param>
/// <param name="IncludeSpecialCharacters"></param>
/// <param name="IncludeNumbers"></param>
/// <returns></returns>
public static string GetRandomString(int Length, bool IncludeSpecialCharacters, bool IncludeNumbers)
{
string returnval = "";

for (int i = 1; i <= Length; i++)
{
returnval += GetRandomChar(IncludeSpecialCharacters, IncludeNumbers).ToString();
}

return returnval;
}

/// <summary>
/// Gets a Random Character
/// </summary>
/// <param name="IncludeSpecialCharacters"></param>
/// <param name="IncludeNumbers"></param>
/// <returns></returns>
public static char GetRandomChar(bool IncludeSpecialCharacters, bool IncludeNumbers)
{
//33-47 , 58-64, 91-96, 123-126 special characters
//48-57 numbers
//65-90 uppercase letters
//97-122 lowercase letters
bool GetNewChar = true;


int randint = 0;
if (IncludeNumbers && IncludeSpecialCharacters)
{
randint = RandomGen.Next(33, 122);
}
else if (IncludeNumbers)
{
//get a number between 48 and 122 but not between 58 and 64
while (GetNewChar)
{
randint = RandomGen.Next(48, 122);
GetNewChar = (randint >= 58 && randint <= 64);
}

}
else if (IncludeSpecialCharacters)
{

while (GetNewChar)
{
randint = RandomGen.Next(33, 122);
GetNewChar = (randint >= 48 && randint <= 57);
}
}
else
{
while (GetNewChar)
{
randint = RandomGen.Next(65, 122);
GetNewChar = (randint >= 91 && randint <= 96);
}

}

return Convert.ToChar(char.ConvertFromUtf32(randint));
}

private static System.Random _RandomGen;
private static System.Random RandomGen
{
get
{
if (_RandomGen == null)
{
_RandomGen = new System.Random();
}
return _RandomGen;
}

}

happy65_sh
یک شنبه 06 اردیبهشت 1388, 10:45 صبح
میشه توضیح بدید چه اتفاقاتی توی کدتون می افته؟کدی که من نوشتم در مجموع با تابع و تغییرات اعمال شده 6-5 خط می شه اما کدی که شما گذاشتین بیش از حد گیج کننده است.
اگه لطف کنید و یکم در موردش توضیح بدی ممنون می شم

esmaeily-hosein
یک شنبه 06 اردیبهشت 1388, 11:11 صبح
نمیدونم کدوم قسمتش پیچیده است .
فقط یه خورده کار بیشتری انجام میده .

پارامترها رو تک تک توضیح میدم :
Length : طول رشته پسود
IncludeSpecialCharacters : وجود کاراکترهای ویژه مثل <
IncludeNumbers: وجود کاراکتر های عددی در رشته خروجی