ایجاد صفحه Login با استفاده از الگوریتم MD5 Hash

یکشنبه 29 شهریور 1394

در این پست نشان خواهیم داد که چگونه با استفاده از الگوریتم MD5 Hash یک فرم Login ایجاد کنیم. الگوريتم Hash با دريافت پيامى با طول متغير آن را به يک پيام خلاصه با طول ثابت نگاشت مى‌نمايد. نقطه قوت اين الگوريتم در آن است که امکان نگاشت خلاصه پيام به پيام اوليه ميسر نمى‌باشد. از متداولترين توابع اين الگوريتم MD5 می باشد.

ایجاد صفحه Login  با استفاده از الگوریتم MD5 Hash

برای ایجاد امنیت در برنامه های مختلف از روش های کدگزاری استفاده میشود. به الگوریتم های رمزنگاری غیرقابل بازگشت 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">&nbsp;</td>
                <td>
                    <asp:Button ID="Button1" runat="server" Text="ورود" Width="73px" />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                    <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 وارد شده است را مجددا رمز کرده و با مقداری که در بانک ذخیره شده است مقایسه می کنیم.

در نهایت می توانید فایل کامل برنامه را از قسمت فایل های ضمیمه دانلود کنید.

 

 

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید