سلام وقت بخیر.
ببخشید در مورد هشکردن رمز اگر دوتا کاربر یک رمز ۱۲۳۴۵ مثلاً داشته باشن مقدار هشهاشون با هم برابره؟
اگر برابره پس تو مرحله لاگین بعداً به مشکل میخوریم و دو یوزر برگردوندهمیشن!
چطور این مشکل رو حل کنیم؟!
سلام دوست عزیز
تا جایی که من حضور ذهن دارم، هش کردن به ۲ چیز بستگی داره.
یکی نوع الگوریتیمیه که هش باهاش اتفاق میافته و یکی هم کلیدِ رمزنگاریه.
فکر کنید رمز یکیه، ولی اگر با الگریتمهای مختلف یا کلیدهای متخلف اون هش به وجود بیاد، هشهای به وجود اومده از یک رمز، با هم برابر نیستن.
اما اگر شما ۱۲۳۴ رو با یک الگریتم به وجود بیارید، بله طبیعتاً یکی هستن.
اصلا باید یکی باشن که بعدا بتونن برگردونده بشن.
اصل هش کردنه پسورد، به خاطر لو نرفتنش توسط سایر افراده وگرنه هیچچ مشکلی توی ولیدیشن یا آتوریزیشن ایجاد نمیکنه.
شما قرار نیست توسط رمز، افراد رو برگردونین، توسط یک کلید یونیک این کار رو میکنید مثل یوزرنیم، ایمیل یا شماره تلفن. اینا یونیک میشن و برای ورود بهشون هم رمزهایی ایجاد شده که مشکلی نداره اگه با سایر رمزها یکی باشه..
اما درکل حرف شما درسته و نباید هشها یکی باشن، در این صورت اگه اطلاعات مهم باشه، میتونه توسط هکرها مورد مقایسه قرار بگیره. یعنی حمله میکنن یه رمز رو پیدا میکنن، حالا میان اون رمز رو با سایر یوزرنیمهای احتمالی وارد میکنن، و اگه کسی رمزش مشابه باشه فورا لاگین میشه... (بدیش اینه).
حالا راه حل شما: یه سیستم وجود داره به نام salt که مثلا php دیفالت توی فانکشنهاش دارتش خودش.
توی این سیستم وقتی کاربر ۱۲۳۴ رو به عنوان رمز ورودی مینویسه، توی salt برای هرکاربر به صورت جداگانه یه کلید رندوم ساخته میشه و اضافه میشه به ابتدای رمز ورودی. مثلا اینطوری aU7jH1234 و بعدا این رمز، به صورت هش شده در میاد و وارد دیتابیس میشه.
حالا مقایسهش چطوریه؟ فک کنید کاربر با این روش رجیستر کرده قبلا و هش پسوردش هم توی دیتابیس ذخیرهست، الان لاگاوت کرده و میخواد مجدد لاگاین کنه؛ خب یوزرنیمش رو میزنه و و برای رمزش هم مینویسه ۱۲۳۴. خب توی سیستم salt میره پسورد هش شدهی اون یوزرنیم رو از دیتابیس میاره و ابتدا از هش خارجش میکنه، چون خودش میدونه قبلا برای این یوزر چه کلید رندومی اضافه کرده بوده، اون قسمت رو ازش حذف میکنه و با دادهی ورودیه کاربر مقایسه میکنه.
اینطوریه که میشه جلوی مشکلات احتمالی رو گرفت
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟