PDA

View Full Version : چرا باید پسورد را هش شده در دیتا بیس ذخیره کنیم؟



masud8002k
جمعه 06 مرداد 1391, 15:58 عصر
سلام
دلایل اینکه پسورد را باید هش شده در دیتا بیس ذخیره کنیم چیه؟
اگر اونجوری ذخیره نکنیم چه مشکلاتی بوجود میاد؟
و کد درج مثلا پیورد را به صورت هش شده در دیتا بیس رو میخواستم حالا برای فراخوانی هش از دیتا بیس برای مقایسه از چی باید استفاده کنیم؟
با تشکر

sara_aryanfar
جمعه 06 مرداد 1391, 16:50 عصر
ببینید هش باعث میشه پسورد شما تبدیل به عبارتی غیرقابل برگشت بشه یعنی حتی اگر هکری توانست بر طبق برخی روشها پسورد شما رو ببینه نتونه از اون بهره ببره و تنها راه استفاده از اون این هست که پسورد وارد شده هش میشه و با مقدار پسورد درست که قبلا هش شده مقایسه میشه اگر یکسان بود یعنی پسورد درست وارد شده

masud8002k
جمعه 06 مرداد 1391, 18:41 عصر
ممنون حالا نحوه هش کردن و خودن اون در لوگین رو توضیح میدید؟

ali_mnkt
جمعه 06 مرداد 1391, 18:42 عصر
ببینید هش باعث میشه پسورد شما تبدیل به عبارتی غیرقابل برگشت بشه یعنی حتی اگر هکری توانست بر طبق برخی روشها پسورد شما رو ببینه نتونه از اون بهره ببره و تنها راه استفاده از اون این هست که پسورد وارد شده هش میشه و با مقدار پسورد درست که قبلا هش شده مقایسه میشه اگر یکسان بود یعنی پسورد درست وارد شده

البته از روش هایی کد های hash شده قابل برگشت هستن

the king
جمعه 06 مرداد 1391, 18:57 عصر
سلام
دلایل اینکه پسورد را باید هش شده در دیتا بیس ذخیره کنیم چیه؟
اگر اونجوری ذخیره نکنیم چه مشکلاتی بوجود میاد؟
و کد درج مثلا پیورد را به صورت هش شده در دیتا بیس رو میخواستم حالا برای فراخوانی هش از دیتا بیس برای مقایسه از چی باید استفاده کنیم؟
با تشکر

موقعی که کاربر ثبت نام می کنه و یا رمز عبورش رو عوض می کنه، رمز عبور جدید رو از کاربر می گیرید، تبدیل اش می کنید به یک رشته Hash
و بعد در بانک اطلاعاتی ذخیره می کنید. دیگه الان نه شما می دانید که رمز کاربر چی بود و نه هکر. شما فقط می دانید که اگر رمز عبور کاربر
Hash بشه حاصل اش چه رشته ای است، اما خود رمز را نمی دانید.

موقعی که کاربر می خواد وارد محیط بشه، ازش رمز عبور رو در یک رشته دریافت می کنید. رشته رو Hash می کنید و با اون Hash ای که روی
بانک اطلاعاتی ذخیره کرده اید مقایسه می کنید. به احتمال خیلی خیلی زیاد اگر رمز اشتباه باشه، دو تا Hash با هم نمی خونه و پیغام می دهید
که رمز صحیح نیست، وگرنه اجازه ورود می دهید.

این تابع رمز عبور یا هر رشته دیگر رو به Hash تبدیل می کنه :

public string PasswordToHash(string password)
{
System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] passwordBytes = System.Text.Encoding.Unicode.GetBytes(password);
byte[] hashBytes = md5.ComputeHash(passwordBytes);
StringBuilder hashText = new StringBuilder();
foreach (byte b in hashBytes)
{
hashText.Append(b.ToString("X2"));
}
return hashText.ToString();
}


اینم مثال اش :

string hash = PasswordToHash("123456");
MessageBox.Show(hash);