Encriptación con AES Rijndael - Ejemplo

En devjoker ya hemos publicado algunos ejemplos de criptografía, pero nos faltaba un ejemplo con Advanced Encryption Standard (AES), también conocido como Rijndael. Se le considera el algoritmo de cifrado más seguro de la actualidad.

Aqui os dejo un ejemplo de la implementacion de este algoritmo es C#. Si ya habeis leido los articulos sobre TripleDES el código os resultará muy familiar, ya que la única variacion es el proveedor utilizado para la encriptacion - por este motivo no explicaremos el código, quien necesite una aclaración que revise el articulo anterior.

Este es el código:

 

using System;

using System.Collections.Generic;

using System.Text;

using System.Security.Cryptography;

using System.IO;

 

namespace AESSample{

 

class CriptoUtil

{

byte[] _key;

byte[] _iv;

 

public CriptoUtil()

{

_key =

Encoding.ASCII.GetBytes("12EstaClave34es56dificil489ssswf");

_iv =

Encoding.ASCII.GetBytes("Devjoker7.37hAES");

}

 

public string Encrit(string inputText)

{

byte[] inputBytes = Encoding.ASCII.GetBytes(inputText);

byte[] encripted;

RijndaelManaged cripto = new RijndaelManaged();

using (MemoryStream ms =

new MemoryStream(inputBytes.Length ))

{

using (CryptoStream objCryptoStream =

new CryptoStream(ms,

cripto.CreateEncryptor(_key, _iv),

CryptoStreamMode.Write))

{

objCryptoStream.Write(inputBytes, 0, inputBytes.Length);

objCryptoStream.FlushFinalBlock();

objCryptoStream.Close();

}

encripted = ms.ToArray();

}

return Convert.ToBase64String(encripted ) ;

}

 

public string Desencrit(string inputText)

{

byte[] inputBytes = Convert.FromBase64String(inputText);

byte[] resultBytes = new byte[inputBytes.Length];

string textoLimpio = String.Empty;

RijndaelManaged cripto = new RijndaelManaged();

using (MemoryStream ms = new MemoryStream(inputBytes ))

{

using (CryptoStream objCryptoStream =

new CryptoStream(ms, cripto.CreateDecryptor(_key, _iv),

CryptoStreamMode.Read ))

{

using (StreamReader sr =

new StreamReader(objCryptoStream, true))

{

textoLimpio = sr.ReadToEnd();

}

}

}

return textoLimpio;

}

} }

 Por supuesto si queremos que la implementacion sea realmente segura, debemos almacenar las claves de encritpacion (_key, _iv) de forma segura, y no "cinceladas" en el código.

Saludos, DJK

 

 

Pedro  Herrarte  Sánchez
Encriptación con AES Rijndael - Ejemplo
Pedro Herrarte Sánchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultoría, análisis, desarrollo y formación. Posee mas de diez años de experiencia trabajando para las principales empresas de España. Es especialista en tecnologías .NET, entornos Web (ASP.NET, ASP.NET MVC,jQuery, HTML5), bases de datos (SQL Server y ORACLE) e integración de sistemas. Es experto en desarrollo (C#, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Pedro es MCP y MAP 2012, es fundador, diseñador y programador de www.devjoker.com..
Fecha de alta:24/12/2009
Última actualizacion:24/12/2009
Visitas totales:26274
Valorar el contenido:
Últimas consultas realizadas en los foros
Últimas preguntas sin contestar en los foros de devjoker.com