PDA

View Full Version : مشکل با استفاده از md5 برای رمز نگاری



fereshte22
شنبه 10 شهریور 1386, 19:38 عصر
سلام
من برای رمزنگاری پسورد از الگوریتم md5 به صورت زیر استفاده کردم.و پسورد را به صورت رمز شده در دیتابیس ذخیره کردم


Dim hashpass AsString
hashpass = System.Web.Security.FormsAuthentication.HashPasswo rdForStoringInConfigFile(TextBoxpassword.Text, "md5")

در موقع لاگین برای چک کردن پسورد مجددا این کار را تکرار کردم (مقدار پسورد را رمزنگاری کردم)و مقدار پسورد خونده شده را با مقدار موجود در دیتابیس چک کردم.
ولی مشکل اینه که مقدار خونده شده با حروف بزرگ است و مقدار موجود در دیتابیس با حروف کوچک است و موقع مقایسه برابر در نظر گرفته نمیشوند.و وقتی هم با تابع
hashpass.ToLower اون را به حروف بزرگ تبدیل میکنم مقدارش عوض میشود.
من نوع پسورد را هم nvarchar(MAX) در دیتابیس در نظر گرفتم.
از دوستان میخوام که من را راهنمایی کنند که کجای کارم مشکل دارد
ممنون

someCoder
یک شنبه 11 شهریور 1386, 02:50 صبح
اول اینکه md5 الگوریتم رمز نگاری نیست! الگوریتم hash هست که ربطی به رمز نگاری نداره. (باور کن ملالغتی نیستم، ولی این دو تا خیلی تفاوت دارن!)
برای پسوردها هم از نظر امنیتی بهتره همینطور که استفاده میکنی بمونه و حروف بزرگ و کوچیک فرق داشته باشن. اینطوری فضای جستجو برای کرکرها بیشتر میشه و پیدا کردن پسورد سخت تر.
اما اگر بازهم میخوای case sensitive نباشه پسوردهات، راهش اینه که قبل از اینکه پسورد رو برای ذخیره تو دیتابیس hash کنی، اون ToLower کنی و بعد hash کنی و در دیتابیس ذخیره کنی.
هروقت هم خواستی مقایسه کنی، بازهم اول ToLower و بعدش hash.