نوشته شده توسط
masud8002k
سلام
دلایل اینکه پسورد را باید هش شده در دیتا بیس ذخیره کنیم چیه؟
اگر اونجوری ذخیره نکنیم چه مشکلاتی بوجود میاد؟
و کد درج مثلا پیورد را به صورت هش شده در دیتا بیس رو میخواستم حالا برای فراخوانی هش از دیتا بیس برای مقایسه از چی باید استفاده کنیم؟
با تشکر
موقعی که کاربر ثبت نام می کنه و یا رمز عبورش رو عوض می کنه، رمز عبور جدید رو از کاربر می گیرید، تبدیل اش می کنید به یک رشته 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);