Encriptar datos del fichero .config

03/02/2005 - 17:31 por Ambros | Informe spam
Hola a todos

Estoy desarrollando una aplicación en la que quiero guardar en el fichero
.config la cadena de conexión a la BBDD SQL pero encriptado. He oido algo de
que .Net puede codificar info. con el método DES.

¿Me podríais dar un ejemplo de como podría hacer esto?

Muchas gracias a todos por vuestra ayuda.
 

Leer las respuestas

#1 Marino Posadas
03/02/2005 - 20:21 | Informe spam
Hola Ambros

Una vez establecido que lo que quieres encriptar es texto plano, lo segundo,
es determinar el grado de "seriedad" del algoritmo de encriptación (DES,
TripleDES, RC2 o Rijndael -y todo esto, usando los algorítmos fáciles, los
simétricos). Todos ellos se correponden con namespaces de
System.Security.Criptography. Supongamos que te conformas con el primero
(DES):

using System;
using System.IO;
using System.Text;
using System.Security.Cryptography;
static void Main(string[] args)
{
// datos a encriptar
string cipherData = "Esto es texto plano (del App.config, por ejemplo)";
// Datos encriptados
byte[] cipherbytes;
// Texto plano en forma de bytes
byte[] plainbytes = Encoding.ASCII.GetBytes(cipherData);
// Instancia de la clase DES
SymmetricAlgorithm desObj = DES.Create();
// generamos la clave simétrica
desObj.GenerateKey();
// generamos el vector
desObj.GenerateIV();
// seleccion de modo (CBC, CFB, CTS, ECB, OFB)
desObj.Mode = CipherMode.CBC;
// seleccionamos el "Padding"
desObj.Padding = PaddingMode.PKCS7;

// ENCRIPTACION
// Los MemoryStream (recuerda, estan en System.IO), son ideales para
esto
MemoryStream ms = new MemoryStream();
// transforma y encripta al memorystream
CryptoStream cs = new
CryptoStream(ms,desObj.CreateEncryptor(),CryptoStreamMode.Write);
cs.Write(plainbytes, 0, plainbytes.Length);
cs.Close();
// pasamos los datos encriptados del memorystream a bytes
cipherbytes = ms.ToArray();
ms.Close(); //siempre cierra los MS
Console.WriteLine("Resultado cifrado: "+
Encoding.ASCII.GetString(cipherbytes));

// DESENCRIPTACION
MemoryStream ms1 = new MemoryStream(cipherbytes);
CryptoStream cs1 = new CryptoStream(ms1, desObj.CreateDecryptor(),
CryptoStreamMode.Read);
// se genera un array de bytes de la misma longitud que el array cifrado
plainbytes = new Byte[cipherbytes.Length];
// descifra el texto de la sección anterior
cs1.Read(plainbytes, 0, cipherbytes.Length);
cs1.Close();
ms1.Close();
Console.WriteLine("Resultado descifrado:
"+Encoding.ASCII.GetString(plainbytes));
}

Espero que te sirva

Saludos cordiales,
Marino Posadas
MVP - Visual C#
MCSD, MCAD, MCT
Alhambra-Eidos

"Ambros" escribió en el mensaje
news:%
Hola a todos

Estoy desarrollando una aplicación en la que quiero guardar en el fichero
.config la cadena de conexión a la BBDD SQL pero encriptado. He oido algo
de
que .Net puede codificar info. con el método DES.

¿Me podríais dar un ejemplo de como podría hacer esto?

Muchas gracias a todos por vuestra ayuda.


Preguntas similares