Borna66
07-29-2010, 02:03 PM
در اين مقاله در رابطه با کدگذاری اطلاعات حساس کاربران سایت مانند کلمه عبور و شماره کارت اعتباری صحبت می کنیم.
یکی از مسائل مهم امنیتی در پروژه های بزرگ مبتنی بر وب کد کردن اطلاعات حساس کاربران می باشد. این اطلاعات می تواند شامل کلمه عبور و یا شماره کارت اعتباری آنها باشد.
حتما" در سایت های بزرگی مانند یاهو مشاهده کردید که در بخش درخواست کلمه عبور به هیچ عنوان امکان ارسال کلمه عبور قدیمی شما وجود ندارد. دلیل این مطلب آنست که تمامی کلمات عبور کاربران توسط الگوریتم های کدگذاری یک طرفه، رمزنگاری شده اند، به شکلی که حتی اگر کسی دسترسی تمام به بانک اطلاعاتی پیدا کند توان استفاده از حساب کاربران سایت را ندارد.
در این مقاله به کمک الگوریتم MD5 کلاسی تهیه می کنیم که یک رشته را بعنوان ورودی دریافت و یک رشته با طول 16 را بصورت کد شده تحویل ما دهد. از این کلاس می توانیم بعنوان بخشی از سطح امنیتی در پروژه هایمان استفاده کنیم.
http://www.aspcode.ir/Article_img/queryanalyzerhashpasswordpr.gif
MD5 :
یک الگوریتم کار آمد رمز سازی است که در بسیاری از زبانهای برنامه نویسی دیگر نیز وجود دارد. MD5 عضوی با نام ComputeHash دارد که یک تابع Hash یا (Hash function) است.
توابع Hash یا (Hash functions) یک binary string با طول دلخواه را به یک binary string با طول کوتاه و ثابت تبدیل می کند، و این خاصیت را دارد که هرگز برای دو ورودی مجزا یک خروجی یکسان وجود نخواهد داشت (به عبارت دیگر توابع Hash تضمین میکنند که هر ورودی خروجی منحصر به فردی را داشته باشد).
برای ساخت کلاس فوق الذکر احتیاج به اضافه کردن دو فضا نام داریم که عبارتند از :
using System.Text;
using System.Security.Cryptography;
ساخت تابع رمز ساز :
public static byte[] computeMD5Hash(string InputString)
{
byte[] MDH = new byte[16];
UTF8Encoding encoder = new UTF8Encoding();
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
MDH = md5Hasher.ComputeHash(encoder.GetBytes(InputString ));
return MDH;
}
شما کد کامل این کلاس را می توانید از قسمت دریافت کد در انتهای همین مقاله دریافت کنید.
نحوه استفاده از این کلاس :
برای استفاده از این کلاس در پروژه های خود، کافیست فایل ClsCrypt.cs را به پوشه App_code منتقل سازید و در هر قسمت از سطوح برنامه که احتیاج به کدگذاری داشتید از دستور زیر استفاده کنید :
ClsCrypt.computeMD5Hash(TextBox1.Text);
توجه داشته باشید از آنجایی که computeMD5Hash بصورت static تعریف شده است احتیاجی به ایجاد ClsCrypt در برنامه نیست.
همچنین در صروتی که برای کد کردن اطلاعات کاربران (مانند کلمه عبور) از این تکنیک استفاده می کنید ، زمان اعتبار سنجی نیز مقدار وارد شده توسط کاربر را ، بویسله روشی که توضیح داده شد کد کرده و سپس با مقدار ذخیره شده در بانک اطلاعات مقایسه کنید.
نکته :
از آنجایی که کلاس فوق الذکر تمام رشته های ورودی (با هر طولی) را در نهایت به یک رشته کد شده با طول 16 تبدیل می کند پیشنهاد می کنیم فیلد موزد نظر در بانک اطلاعاتی از نوع Binary با طول 16 انتخاب شود.
دانلود فایل ضمیمه | دریافت کد (http://www.aspcode.ir/Download/ClsCrypt.zip)
یکی از مسائل مهم امنیتی در پروژه های بزرگ مبتنی بر وب کد کردن اطلاعات حساس کاربران می باشد. این اطلاعات می تواند شامل کلمه عبور و یا شماره کارت اعتباری آنها باشد.
حتما" در سایت های بزرگی مانند یاهو مشاهده کردید که در بخش درخواست کلمه عبور به هیچ عنوان امکان ارسال کلمه عبور قدیمی شما وجود ندارد. دلیل این مطلب آنست که تمامی کلمات عبور کاربران توسط الگوریتم های کدگذاری یک طرفه، رمزنگاری شده اند، به شکلی که حتی اگر کسی دسترسی تمام به بانک اطلاعاتی پیدا کند توان استفاده از حساب کاربران سایت را ندارد.
در این مقاله به کمک الگوریتم MD5 کلاسی تهیه می کنیم که یک رشته را بعنوان ورودی دریافت و یک رشته با طول 16 را بصورت کد شده تحویل ما دهد. از این کلاس می توانیم بعنوان بخشی از سطح امنیتی در پروژه هایمان استفاده کنیم.
http://www.aspcode.ir/Article_img/queryanalyzerhashpasswordpr.gif
MD5 :
یک الگوریتم کار آمد رمز سازی است که در بسیاری از زبانهای برنامه نویسی دیگر نیز وجود دارد. MD5 عضوی با نام ComputeHash دارد که یک تابع Hash یا (Hash function) است.
توابع Hash یا (Hash functions) یک binary string با طول دلخواه را به یک binary string با طول کوتاه و ثابت تبدیل می کند، و این خاصیت را دارد که هرگز برای دو ورودی مجزا یک خروجی یکسان وجود نخواهد داشت (به عبارت دیگر توابع Hash تضمین میکنند که هر ورودی خروجی منحصر به فردی را داشته باشد).
برای ساخت کلاس فوق الذکر احتیاج به اضافه کردن دو فضا نام داریم که عبارتند از :
using System.Text;
using System.Security.Cryptography;
ساخت تابع رمز ساز :
public static byte[] computeMD5Hash(string InputString)
{
byte[] MDH = new byte[16];
UTF8Encoding encoder = new UTF8Encoding();
MD5CryptoServiceProvider md5Hasher = new MD5CryptoServiceProvider();
MDH = md5Hasher.ComputeHash(encoder.GetBytes(InputString ));
return MDH;
}
شما کد کامل این کلاس را می توانید از قسمت دریافت کد در انتهای همین مقاله دریافت کنید.
نحوه استفاده از این کلاس :
برای استفاده از این کلاس در پروژه های خود، کافیست فایل ClsCrypt.cs را به پوشه App_code منتقل سازید و در هر قسمت از سطوح برنامه که احتیاج به کدگذاری داشتید از دستور زیر استفاده کنید :
ClsCrypt.computeMD5Hash(TextBox1.Text);
توجه داشته باشید از آنجایی که computeMD5Hash بصورت static تعریف شده است احتیاجی به ایجاد ClsCrypt در برنامه نیست.
همچنین در صروتی که برای کد کردن اطلاعات کاربران (مانند کلمه عبور) از این تکنیک استفاده می کنید ، زمان اعتبار سنجی نیز مقدار وارد شده توسط کاربر را ، بویسله روشی که توضیح داده شد کد کرده و سپس با مقدار ذخیره شده در بانک اطلاعات مقایسه کنید.
نکته :
از آنجایی که کلاس فوق الذکر تمام رشته های ورودی (با هر طولی) را در نهایت به یک رشته کد شده با طول 16 تبدیل می کند پیشنهاد می کنیم فیلد موزد نظر در بانک اطلاعاتی از نوع Binary با طول 16 انتخاب شود.
دانلود فایل ضمیمه | دریافت کد (http://www.aspcode.ir/Download/ClsCrypt.zip)