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

Advertisements

Published by

Alan Feekery

Developer, Gamer, Musician, Cyclist and big Motorsport fan... enjoys the odd cup of coffee :)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s