Simple encrypting & decrypting of strings in ASP.NET

Using the link I posted earlier about encrypting & decrypting data in C#, here is the code for a simple ASP.NET web site that uses the encryption/decryption explained on a string.

.aspx file

<%@ 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>

</head>

<body>

    <form id=”form1” runat=”server”>

        <div>

        </div>

    </form>

</body>

</html>

.aspx.cs file (code-behind)

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Security.Cryptography;

using System.IO;

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

{

    protected void Page_Load(object sender, EventArgs e)

    {

        string encrypted = Encrypt(“mArTy”, “mccabe”);

        Response.Write(“Encrypted: <b>” + encrypted + “</b><br>”);

        Response.Write(“Decrypted: <b>” + Decrypt(encrypted, “mccabe”) + “</b>”);

    }

    /// <summary>

    /// Encrypt a string into a string using a password, uses Encrypt(byte[], byte[], byte[]) 

    /// </summary>

    public static string Encrypt(string clearText, string Password)

    {

        byte[] clearBytes = System.Text.Encoding.Unicode.GetBytes(clearText);

        PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,

            new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 

            0x65, 0x64, 0x76, 0x65, 0x64, 0x65, 0x76});

        byte[] encryptedData = Encrypt(clearBytes, pdb.GetBytes(32), pdb.GetBytes(16));

        return Convert.ToBase64String(encryptedData);

    }

    public static byte[] Encrypt(byte[] clearData, byte[] Key, byte[] IV)

    {

        MemoryStream ms = new MemoryStream();

        Rijndael alg = Rijndael.Create();

        alg.Key = Key;

        alg.IV = IV;

        CryptoStream cs = new CryptoStream(ms, alg.CreateEncryptor(), CryptoStreamMode.Write);

        cs.Write(clearData, 0, clearData.Length);

        cs.Close();

        byte[] encryptedData = ms.ToArray();

        return encryptedData;

    }

    /// <summary>

    /// Decrypt a string into a string using a password, uses Decrypt(byte[], byte[], byte[]) 

    /// </summary>

    public static string Decrypt(string cipherText, string Password)

    {

        byte[] cipherBytes = Convert.FromBase64String(cipherText);

        PasswordDeriveBytes pdb = new PasswordDeriveBytes(Password,

            new byte[] {0x49, 0x76, 0x61, 0x6e, 0x20, 0x4d, 0x65, 

            0x64, 0x76, 0x65, 0x64, 0x65, 0x76});

        byte[] decryptedData = Decrypt(cipherBytes, pdb.GetBytes(32), pdb.GetBytes(16));

        return System.Text.Encoding.Unicode.GetString(decryptedData);

    }

    public static byte[] Decrypt(byte[] cipherData, byte[] Key, byte[] IV)

    {

        MemoryStream ms = new MemoryStream();

        Rijndael alg = Rijndael.Create();

        alg.Key = Key;

        alg.IV = IV;

        CryptoStream cs = new CryptoStream(ms, alg.CreateDecryptor(), CryptoStreamMode.Write);

        cs.Write(cipherData, 0, cipherData.Length);

        cs.Close();

        byte[] decryptedData = ms.ToArray();

        return decryptedData;

    }

}

Resource: http://www.codeproject.com/KB/security/DotNetCrypto.aspx

  1. alanfeekery posted this
blog comments powered by Disqus