ایجاد صفحه Login با استفاده از الگوریتم MD5 Hash
یکشنبه 29 شهریور 1394در این پست نشان خواهیم داد که چگونه با استفاده از الگوریتم MD5 Hash یک فرم Login ایجاد کنیم. الگوريتم Hash با دريافت پيامى با طول متغير آن را به يک پيام خلاصه با طول ثابت نگاشت مىنمايد. نقطه قوت اين الگوريتم در آن است که امکان نگاشت خلاصه پيام به پيام اوليه ميسر نمىباشد. از متداولترين توابع اين الگوريتم MD5 می باشد.
برای ایجاد امنیت در برنامه های مختلف از روش های کدگزاری استفاده میشود. به الگوریتم های رمزنگاری غیرقابل بازگشت Hash گفته می شود. یکی از معمول ترین این الگوریتم ها MD5 می باشد.
در الگوریتم MD5 احتمال وجود تکرار و تصادف وجود ندارد و تمام مقادیر منحصر به فرد می باشد. MD5 یک روش رمز نگاری است که یک رشته با طول متفاوت را به عنوان ورودی گرفته و یک خلاصه MD5 با طول 128 بیت می سازد.
مرحله 1: مانند تصویر زیر و با استفاده از کدهایی که در ادامه آمده، یک فرم Login ساده ایجاد کنید.
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> .auto-style1 { width: 100%; margin-bottom: 26px; } .auto-style2 { width: 95px; } </style> </head> <body dir="rtl"> <form id="form1" runat="server"> <div> <table class="auto-style1"> <tr> <td class="auto-style2">نام کاربری : </td> <td> <asp:TextBox ID="TextBox1" runat="server" Width="270px"></asp:TextBox> </td> </tr> <tr> <td class="auto-style2">رمز عبور : </td> <td> <asp:TextBox ID="TextBox2" runat="server" Width="270px" TextMode="Password"></asp:TextBox> </td> </tr> <tr> <td class="auto-style2"> </td> <td> <asp:Button ID="Button1" runat="server" Text="ورود" Width="73px" /> <asp:Button ID="Button2" runat="server" Text="لغو" Width="81px" /> </td> </tr> <tr> <td class="auto-style2"> </td> <td><a href="http://www.barnamenevisan.org"> مرجع تخصصی برنامه نویسان </a></td> </tr> </table> </div></form></body></html>
مرحله 2: در مرحله بعد، یک جدول در بانک اطلاعاتی ایجاد کنید.
مرحله 3:
بعد از ایجاد جدول، برای به دست آوردن نام کاربری و رمز عبور از کدهای زیر برای دکمه "ثبت نام" استفاده کنید.
protected void Button2_Click(object sender, EventArgs e) { string username = TextBox1.Text.ToString(); string password = TextBox2.Text; //Get the encrypt the password by using the class string pass = encryption(password); Label1.Text = pass; //Check whether the UseName and password are Empty if (username.Length > 0 && password.Length > 0) { //creating the connection string string connection = ConfigurationManager.ConnectionStrings["HashMd5ConnectionString"].ToString(); SqlConnection con = new SqlConnection(connection); string passwords = encryption(password); con.Open(); // Check whether the Username Found in the Existing DB string search = "SELECT * FROM UserAccount WHERE (UserName = '" + username + "');"; SqlCommand cmds = new SqlCommand(search, con); SqlDataReader sqldrs = cmds.ExecuteReader(); if (sqldrs.Read()) { string passed = (string)sqldrs["Password"]; Label1.Text = "این نام کاربری تکراری می باشد"; } else { sqldrs.Close(); try { // if the Username not found create the new user accound string sql = "INSERT INTO UserAccount (UserName, Password) VALUES ('" + username + "','" + passwords + "');"; SqlCommand cmd = new SqlCommand(sql, con); cmd.ExecuteNonQuery(); string Message = "با موفقیت ثبت شد"; Label1.Text = Message.ToString(); TextBox1.Text = ""; TextBox2.Text = ""; con.Close(); Response.Redirect("Default2.aspx"); } catch (Exception ex) { Label1.Text = ex.ToString(); } } con.Close(); } else { string Message = "نام کاربری یا رمزعبور وارد نشده است"; Label1.Text = Message.ToString(); }
مرحله 4:
اکنون با استفاده از متد زیر، رمز عبور را رمزنگاری می کنیم.
public string encryption(string password) { MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] encrypt; UTF8Encoding encode = new UTF8Encoding(); //encrypt the given password string into Encrypted data encrypt = md5.ComputeHash(encode.GetBytes(password)); StringBuilder encryptdata = new StringBuilder(); //Create a new string by using the encrypted data for (int i = 0; i < encrypt.Length; i++) { encryptdata.Append(encrypt[i].ToString()); } return encryptdata.ToString(); }
بعد از اجرای فرم و وارد کردن مقدار درون TextBox ها، مانند تصویر زیر، رمزعبور وارد شده بصورت رمزنگاری در جدول ذخیره می شوند.
مرحله 5: دکمه ورود
اکنون می توانید کدهای زیر را درون رویداد کلیک دکمه "ورود" وارد کنید.
{ string username = TextBox1.Text.ToString(); string password = TextBox2.Text; string con = ConfigurationManager.ConnectionStrings["HashMd5ConnectionString"].ToString(); SqlConnection connection = new SqlConnection(con); //encrypt the given password string passwords = encryption(password); String query = "SELECT UserName, Password FROM UserAccount WHERE (UserName = '" + username + "') AND (Password = '"+passwords+"');"; SqlCommand cmd = new SqlCommand(query, connection); connection.Open(); SqlDataReader sqldr = cmd.ExecuteReader(); if (sqldr.Read()) { Response.Redirect("WebForm1.aspx"); } else { Label1.Text = "رمز عبور یا نام کاربری اشتباه است"; } sqldr.Close(); connection.Close(); }
بعد از وارد کردن کدها، نام کاربری و رمزعبوری که قبلا ثبت نام کرده اید، درون textbox ها وارد کنید و روی دکمه "ورود" کلیک کنید.
اگر مقادیر وارد شده صحیح نباشند، یک پیغام نمایش داده خواهد شد.
در صورت صحیح بودن، به صفحه موردنظر هدایت می شوید.
رمزگشایی با استفاده از MD5 امکان پذیر نیست. بنابراین ما در اینجا، رمزی راکه در textbox وارد شده است را مجددا رمز کرده و با مقداری که در بانک ذخیره شده است مقایسه می کنیم.
در نهایت می توانید فایل کامل برنامه را از قسمت فایل های ضمیمه دانلود کنید.
- ASP.net
- 5k بازدید
- 6 تشکر