ذخیره اطلاعات به صورت رمزنگاری شده در ASP.NET

سه شنبه 5 آبان 1394

در این مقاله قصد داریم یک فرم ساده ثبت نام ساخته و ترتیبی دهیم که اطلاعات (برخی اطلاعاتی که مایل هستیم ) به صورت رمزنگاری شده در بانک ذخیره شود.

ذخیره اطلاعات به صورت رمزنگاری شده در ASP.NET

مرحله 1- ویژوال استودیو 2010 را باز کرده و یک وب سایت از نوع Empty بسازید.و به آن نام دلخواه مثلا  registration_demo.  بدهید.

مرحله 2- در  Solution Explorer  بر روی پروژه کلیک راست کنید و Add=>Web Form را بزنید.

مرحله 3- برای ساخت دیتابیس بر روی Solution کلیک راست کرده و گزینه Add=>New Item را بزنید.سپس گزینه Add SQL DataBase را بزنید.

در نوار Server Explorer دیتابیس شما دیده می شود .یک جدول با ستون هایی که در شکل زیر دیده می شود برای آن تعریف کنید.فراموش نکنید که باید ستون id به عنوان کلید و به صورت IS Identity – True تعریف شود.

table

حال بر روی فرم خود چند Lable و Text Box تعریف می کنیم تا بتوانیم اطلاعات را از کاربر دریافت کرده و در بانک ذخیره کنیم. شکل زیر کد صفحه را در قسمت Design نشان می دهد

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .style1
        {
            width: 263px;
        }
        .style2
        {
            width: 251px;
        }
    </style>
</head>
<body dir="rtl" style="background-color:cadetblue;">
    <form id="form1" runat="server">
    <div>
    
        <table style="width:100%;">
            <tr>
                <td class="style1">
                    نام کاربری:</td>
                <td class="style2">
                    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
                </td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td class="style1">
                    ایمیل:</td>
                <td class="style2">
                    <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
                </td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td class="style1">
                    رمز عبور:</td>
                <td class="style2">
                    <asp:TextBox ID="TextBox3" runat="server" EnableTheming="True" 
                        TextMode="Password"></asp:TextBox>
                </td>
                <td>
                    &nbsp;</td>
            </tr>
            <tr>
                <td class="style1">
                    <asp:Label ID="Label1" runat="server"></asp:Label>
                </td>
                <td class="style2">
                    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Submit" />
                </td>
                <td>
                    &nbsp;</td>
            </tr>
        </table>
    
    </div>
    </form>
</body>
</html>

بعد از اجرا شکل زیر را خواهید دید

شکل صفحه در قسمت کد به صورت زیر است.توجه کنید که از ADO.NET برای ارتباط برنامه با دیتا بیس و ذخیره اطلاعات استفاده کرده ایم .

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Data.SqlClient;

public partial class _Default : System.Web.UI.Page
{

    SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True");

    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string strpass = encryptpass(TextBox3.Text);
        SqlCommand cmd = new SqlCommand("insert into tbl_data values(@name,@email,@pass)", con);
        cmd.Parameters.AddWithValue("@name", TextBox1.Text);
        cmd.Parameters.AddWithValue("@email", TextBox2.Text);
        cmd.Parameters.AddWithValue("@pass", strpass);
        con.Open();
        int i =cmd.ExecuteNonQuery();
        con.Close();
        if (i!=0)
        {
            Label1.Text = "Registration Complete";
            Label1.ForeColor = System.Drawing.Color.ForestGreen;

        }
        else
        {
            Label1.Text = "Error while Registring";
            Label1.ForeColor = System.Drawing.Color.Red;
        }


    }


    public string encryptpass(string password)
    {

        string msg = "";
        byte[] encode = new byte[password.Length];
        encode = Encoding.UTF8.GetBytes(password);
        msg =Convert.ToBase64String(encode);
        return msg;
    
    
    }
}

در قسمت طراحی برای پسورد یک Input با ویژگی TextMode="Password" قرار دادیم این کار باعث می شود وقتی کاربر اطلاعات را وارد می کند به صورت ستاره دیده شود . در قسمت Code Behind صفحه برای اینکه این پسورد به صورت رمزنگاری شده ذخیره شود یک تابع به نام encryptpass ایجاد کرده ایم که این تابع توسط دستور  encode = Encoding.UTF8.GetBytes(password);  اطلاعات را به صورت رمزنگاری شده تحویل می دهد.این تابع را در داخل Button1_Click فراخوانی کرده ایم .به این صورت که توسط دستور

string strpass = encryptpass(TextBox3.Text);

محتویات داخل TextBox مربوط به پسورد را ابتدا رمزنگاری کرده و سپس این مقدار را در دیتابیس ذخیره می کنیم .

محتویات بانک به شکل زیر خواهد بود.

Save table Data

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

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

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

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

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