PDA

View Full Version : به کار بردن الگوریتم MD5 در دیتابیس



eletcomp
سه شنبه 18 آذر 1393, 14:59 عصر
با سلام
من یک دیتابیسی دارم که دارای جدول یوزر هست که نام کاربری و پسورد داخل اش ذخیره میشه!! میخوام پسورد با الگوریتم md5 هش کنم؟؟؟ ا
اگر اموزش تصویری یا متنی در این ضمینه لطفا بدهید!! توی گوگل چیزی پیدا نکردم!!
سپاس

abdullah20
سه شنبه 18 آذر 1393, 15:22 عصر
public string CalculateMD5Hash(string input) {
//محاسبه طول و دریافت رشته هش شونده
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);


// تبدیل به رشته
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("X2"));
}
return sb.ToString().ToLower();
}


private void btnGenerate_Click(object sender, EventArgs e)
{
textBox1.Text = CalculateMD5Hash(txtString.Text);
}

eletcomp
سه شنبه 18 آذر 1393, 15:40 عصر
ممنون دوست عزیز: میشه در مورد عملکرد این کد ها توضیح بدهید؟؟؟
مثلا من پسورد 12345 را برای یوزر admin انتخاب می کنم!!! در حالت عادی این پسورد به صورت عدد در دیتابیس ذخیره میشه!! و من میتونم برم داخل sql server و از جدول مورد نظر :فیلد مورد نظر یعنی همان پسورد را بخوانم؟؟!!
سئوال اینجا هست: که زمانیکه از این الگوریتم استفاده بشه ان عدد 12345 به کارکتر تبدیل میشه؟؟؟ و به جای 12345 یک سری کارکتر شامل حروف و... جایگزین این اعداد میشه؟؟ ایا منظور را درست فهمیدم؟؟؟
حالا اگر من بخوام این هش را دیکد کنم باید چه کار کنم؟؟؟ یا فرض کنید من پسورد یوزر را یادم رفته !!! ان وقت چی!!؟؟؟
سپاس

abdullah20
سه شنبه 18 آذر 1393, 15:47 عصر
بله به جای 123456 یک سری حروف ذخیره میشه
ولی با توجه داشته باشید که این الگوریتم رمزنگاری برگشت ناپذیر است
برای همین نمیشه ازش استفاده کرد
شما میتونید از الگوریتم های رمزنگاری دیگه مثل AES استفاده کنید چون پرگشت پذیر هستند

eletcomp
سه شنبه 18 آذر 1393, 15:53 عصر
ممنون دوست عزیز: یعنی چی برگشت نا پذیر هست؟؟؟ یعنی دیکد نمیشه!!؟پس بعضی سایت هایی که هستند: ان ها چه کار می کنند؟! ایا به درد امنیت پروژه میخوره؟؟؟
راستی من شنیدم وردپرس از این سیستم استفاده می کنه برای دیتابیس اش!! درسته؟؟ کار هکر ها را سخت کرده!:قهقهه:
سپاس

Mahmoud Zaad
سه شنبه 18 آذر 1393, 16:13 عصر
با سلام
بله نمیشه اطلاعات رو دی کد کرد. ولی برای پسورد میشه استفاده کرد بدین صورت: شما اول پسورد رو کد می کنید و در دیتابیس ذخیره میکنید، بعد موقع لاگین، پسوردی که کاربر وارد کرده رو هم به همین صورت کد می کنید، بعد این دو تا پسورد که کد شده اند رو با هم مقایسه می کنید یعنی شما مقدار کد شده ی پسوردی که کاربر وارد کرده رو در دیتابیس جستجو می کنید. درکنار این می تونید یک یا چند سوال امنیتی هم داشته باشید که کاربر اگه پسورد رو یادش رفت بتونه به اینها جواب بده و اگر جواب(ها) درست بود اون موقع، پسوردی که در دیتابیس ذخیره شده رو با پسورد جدید آپدیت می کنید.

eletcomp
سه شنبه 18 آذر 1393, 18:25 عصر
ممنون دوست عزیز: نمونه سورسی از این سیستم مقایسه ای که گفتید دارید!!؟؟؟ یکم پیچیده شد!!
سپاس

Mahmoud Zaad
سه شنبه 18 آذر 1393, 19:12 عصر
بفرمایید، یه مثال ساده!

eletcomp
سه شنبه 18 آذر 1393, 19:18 عصر
ممنون دوست عزیز: ولی پروژه ای که دادی باز نمیشه!! تازه این کد نوشته ای یا قبلا داشتی؟؟؟ با اکسس هست؟؟؟ sql server اش را داری؟؟

سپاس

Mahmoud Zaad
سه شنبه 18 آذر 1393, 19:23 عصر
خطا میده یا چی؟!!
این یعنی چی؟ "تازه این کد نوشته ای یا قبلا داشتی؟؟؟" چه فرقی میکنه؟!!!
شما به جای OleDb ها بنویسید Sql و فضای نام مربوطه رو هم بالا اضافه کنید. کار خاصی نداره. البته کانکشن استرینگ رو هم با توجه به دیتابیس خودتون باید تنظیم کنید.

eletcomp
سه شنبه 18 آذر 1393, 19:29 عصر
جسارت نشه دوست عزیز: منظور ام این هست که :برنامه من vs2010 هست!! ارور این را میگه که:کد شما با ورژن برنامه من مشکل داره!!! عکس از ارور میزارم!!

126436

Mahmoud Zaad
سه شنبه 18 آذر 1393, 19:39 عصر
آها! این پروژه با 2008 هست، از طریق فایل sln هم نتونستید بازش کنید؟

eletcomp
سه شنبه 18 آذر 1393, 20:10 عصر
نه خیر: هیچ جوری نمیشه باز اش کرد! ارور میده!!

Mahmoud Zaad
سه شنبه 18 آذر 1393, 20:26 عصر
از طریق منوی File > Open > Project/Solution یه امتحان کنید، ببینید باز میشه.
دوستان دیگه یه تست کنند اگه می تونن تبدیلش کنن، چون رو سیستم من که مشکلی نداره.

ataalavi20
چهارشنبه 19 آذر 1393, 10:46 صبح
با سلام
من یک نرم افزار طراحی کردم و میخوام حتما یک فرم ورود داشته باشه ..
الان برای اعتبار سنجی کاربران از یه if استفاده کردم که عملکردش خیلی سادس . یعنی اگر مقادیر درون تکست باکس نام کاربری و پسورد با مقداری که من به if دادم یکی بود اونوقت وارد بشو در غیر اینصورت پیغام خطا بده .
حالا میخوام این کار رو با استفاده از sql انجام بدم . یعنی یه جدول درست میکنم و مقادیر نام کاربری و پسورد هایی که ایجاد میشه رو اونجا ثبت میکنم .و بعدش از اونجا اعتبار سنجی کنم .
چون الان فقط واسه یه کاربر میشه و وقتی کاربر بخواد پسوردشو عوض کنه نمیتونه .ولی با دیتابیس این کار راحت انجام میشه ..
ممنون میشم راهنمایی کنید که چطور این کار رو انجام بدم . متشکرم .
---------------------------
کاربرد md5 چی هست ؟؟
عملکرد این کدهایی که توی برنامه هست رو میشه توضیح بدید ؟؟

Mahmoud Zaad
چهارشنبه 19 آذر 1393, 18:16 عصر
با سلام
من یک نرم افزار طراحی کردم و میخوام حتما یک فرم ورود داشته باشه ..
الان برای اعتبار سنجی کاربران از یه if استفاده کردم که عملکردش خیلی سادس . یعنی اگر مقادیر درون تکست باکس نام کاربری و پسورد با مقداری که من به if دادم یکی بود اونوقت وارد بشو در غیر اینصورت پیغام خطا بده .
حالا میخوام این کار رو با استفاده از sql انجام بدم . یعنی یه جدول درست میکنم و مقادیر نام کاربری و پسورد هایی که ایجاد میشه رو اونجا ثبت میکنم .و بعدش از اونجا اعتبار سنجی کنم .
چون الان فقط واسه یه کاربر میشه و وقتی کاربر بخواد پسوردشو عوض کنه نمیتونه .ولی با دیتابیس این کار راحت انجام میشه ..
ممنون میشم راهنمایی کنید که چطور این کار رو انجام بدم . متشکرم .
---------------------------
کاربرد md5 چی هست ؟؟
عملکرد این کدهایی که توی برنامه هست رو میشه توضیح بدید ؟؟
md5 یه الگوریتم رمز نگاری غیر قابل برگشت هست. شما اگه اطلاعات کاربر رو بدون کد کردن توی دیتابیس ذخیره کنید یه نفر که دنبال نفوذ به سیستم هست خیلی راحت نام کاربری و رمز عبور کاربر رو پیدا می کنه و وارد سیستم شما میشه، یعنی امنیت این روش پایینه ولی شما می تونید با یه الگوریتم رمز نگاری، پسورد کاربرتون رو رمز نگاری کنید که پیدا کردن رمز عبور کاربر (یا هر اطلاعات دیگه ای) سخت تر بشه.
شما اگه فقط دنبال ذخیره اطلاعات کاربر تو دیتابیس هستید، مشکل خاصی نخواهید داشت، با یه Insert و Select ساده می تونید اینکار رو انجام بدید. ولی برای رمزنگاری اطلاعات می تونید از فایل بالا استفاده کنید.