En este ejemplo tengo un webform con 4 campos username, password, firstname y lastname lo que hare sera encriptar el password y guardarlo en la base de datos luego voy a jalar este campo y desencriptar este campo y mostrarlo usando un gridview.
El diseño se vera asi:
El codigo en el lado del cliente sera este:
</head> <body> <form id="form1" runat="server"> <div> <table align="center"> <tr> <td colspan="2"> <b>Encryption and Decryption of Password</b> </td> </tr> <tr> <td> UserName </td> <td> <asp:TextBox ID="txtname" runat="server"></asp:TextBox> </td> </tr> <tr> <td> Password </td> <td> <asp:TextBox ID="txtPassword" runat="server" TextMode="Password"></asp:TextBox> </td> </tr> <tr> <td> FirstName </td> <td> <asp:TextBox ID="txtfname" runat="server"></asp:TextBox> </td> </tr> <tr> <td> LastName </td> <td> <asp:TextBox ID="txtlname" runat="server"></asp:TextBox> </td> </tr> <tr> <td> </td> <td> <asp:Button ID="btnSubmit" runat="server" Text="Submit" onclick="btnSubmit_Click" /> </td> </tr> </table> </div> <div> <table align="center"> <tr> <td> <b>Encryption of Password Details</b> </td> </tr> <tr> <td> <asp:GridView ID="gvUsers" runat="server" CellPadding="4" BackColor="White" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px"> <RowStyle BackColor="White" ForeColor="#330099" /> <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" /> <PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" /> <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" HorizontalAlign="Left"/> </asp:GridView> </td> </tr> </table> </div> <div> <table align="center"> <tr> <td> <b>Decryption of Password Details</b> </td> </tr> <tr> <td> <asp:GridView ID="gvdecryption" runat="server" BackColor="White" BorderColor="#CC9966" BorderStyle="None" BorderWidth="1px" CellPadding="4" onrowdatabound="gvdecryption_RowDataBound"> <RowStyle BackColor="White" ForeColor="#330099" /> <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" /> <PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" /> <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" /> <HeaderStyle BackColor="#990000" Font-Bold="True" ForeColor="#FFFFCC" /> </asp:GridView> </td> </tr> </table> </div> </form>Despues de esto en el lado del servidor agregar los namespace
System.Text y System.Data.SQLCliente. En el primero contiene clases que representan codificacion de caracteres ASCII y Unicode y con el segundo nos permitira crear conexiones a la Base de Datos.
Despues de esto diseñamos una BD con el nombre que quieran, crean 1 tabla de nombre Usuario con 4 campos tipo nvarchar username, password, firstname y lastname.
private const string strconnection = "Data Source=XSaint;Initial Catalog=XSaint;Integrated Security=True"; SqlConnection con = new SqlConnection(strconnection); protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BindencryptedData(); BindDecryptedData(); } } protected void btnSubmit_Click(object sender, EventArgs e) { string strpassword = Encryptdata(txtPassword.Text); con.Open(); SqlCommand cmd = new SqlCommand("insert into Usuario(UserName,Password,FirstName,LastName) values('" + txtname.Text + "','" + strpassword + "','" + txtfname.Text + "','" + txtlname.Text + "')", con); cmd.ExecuteNonQuery(); con.Close(); BindencryptedData(); BindDecryptedData(); } protected void BindencryptedData() { con.Open(); SqlCommand cmd = new SqlCommand("select * from Usuario", con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); gvUsers.DataSource = ds; gvUsers.DataBind(); con.Close(); } protected void BindDecryptedData() { con.Open(); SqlCommand cmd = new SqlCommand("select * from Usuario", con); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet(); da.Fill(ds); gvdecryption.DataSource = ds; gvdecryption.DataBind(); con.Close(); } private string Encryptdata(string password) { string strmsg = string.Empty; byte[] encode = new byte[password.Length]; encode = Encoding.UTF8.GetBytes(password); strmsg = Convert.ToBase64String(encode); return strmsg; } private string Decryptdata(string encryptpwd) { string decryptpwd = string.Empty; UTF8Encoding encodepwd = new UTF8Encoding(); Decoder Decode = encodepwd.GetDecoder(); byte[] todecode_byte = Convert.FromBase64String(encryptpwd); int charCount = Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length); char[] decoded_char = new char[charCount]; Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0); decryptpwd = new String(decoded_char); return decryptpwd; } protected void gvdecryption_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { string decryptpassword = e.Row.Cells[1].Text; e.Row.Cells[1].Text = Decryptdata(decryptpassword); } }al ejecutar les saldra como la foto de arriba =)
0 comentarios:
Publicar un comentario