محمد کمائی - Telegram : @komayi
محمد کمائی - Telegram : @komayi
خواندن ۲ دقیقه·۲ سال پیش

Password hash .net core

هش کردن پسورد کاربران سیستم هم الزامی هم اجباری هم واجب است و اگر جدول User سیستم لو بره هیچ کس حتی مالک سایت هم نباید پسورد کاربران رو بدونه.


هش یک طرفه است و قابل برگشت نیست انکریپت قابل برگشته

هکرها لیستی دارن از پسوردهای پراستفاده که با الگوریتمهای معروف هش اونارو هش کردن پس لیست هش پسوردهای پر استفاده رو دارن ، برای جلوگیری از پیدا کردن اونها از لیستشون باید یه متن یا عدد رندوم هم علاوه بر هش ذخیره بشه که بهش میگن سالت پسورد یا نمک (salt password) که دیگه چون پیدا کردن اون سالت رندوم سخته کلا کارشون رو سخت تر و احتمال حدس زدن رو حتی برای پسوردهای پر استفاده نزدیک به صفر میکنه

سالت باید ذخیره بشه تا برای ساخت مجدد هش استفاده بشه البته در جایی غیر از کنار هش تا هکر اونو نبینه ، یه راه ساده برای ذخیره نکردنش اینه که سالت رو با هش ترکیب کرد و موقع لاگین دوباره سالت رو کشید بیرون و هش رو تولید کرد ضمنا وجود سالت باعث میشه دو نفر که پسورد یکسان دارن هش پسوردشون یکسان نشه

خوشبختانه روش جایگذاری سالت داخل خود هش رو دات نت کور با سخت ترین الگوریتم انجام داده و من سورس کد آخرین ورژنش یعنی ورژن ۳ اش رو از سورس کد دات نت کور استخراج کردم و اکستنشن متدش کردم و در پروژه هام استفاده میکنم

اینم کدها :

https://stackoverflow.com/a/72429730/9875486

لینک گیت هابم که استفاده کردم هم داخل همین لینک هست

البته اگر از asp.net identity استفاده میکنید که متدش در کلاسهای manager اش موجوده و میتونید استفاده کنید

این رو هم مد نظر داشته باشین که موقع لاگین پسورد رسیده به اکشن هش میشه و با هش ذخیره شده داخل دیتابیس مقایسه میشه که اگر هشها یکسان بود یعنی پسورد درسته و کاربر باید لاگین بشه به سیستم.

موقع لاگینپسورد کاربرانhash passwordnet 6net core
C# , .net core & angular & blazor , sql server
شاید از این پست‌ها خوشتان بیاید