Esta nota te muestro cómo cifrar y descifrar la cadena de conexión en el archivo app.config en una aplicación de Windows Forms de C# .Net
Puede usar muchos algoritmos diferentes para cifrar y descifrar una cadena de texto. Sin embargo, dentro del alcance de este artículo, solo le muestro cómo usar el algoritmo TripleDes para cifrar y descifrar su cadena de conexión.
La cadena de conexión generalmente se almacena en app.config y rara vez se cifra. Si alguien abre el archivo app.config, verá la información de conexión del servidor de datos. Esto es muy peligroso si inician sesión en la base de datos para sabotear o editar datos sin usar software.
Por lo tanto, el cifrado de la cadena de conexión es esencial, le ayuda a proteger la información de conexión a la base de datos.
Debemos por empezar creando una aplicación del tipo Windows Forms como se muestra a continuación.
Para cifrar y descifrar una cadena, debe crear los métodos de cifrado y descifrado utilizando el algoritmo TripleDes.
Ahora necesita crear un método de cifrado que le permite cifrar la cadena con la clave como el siguiente código C#.
string Encrypt(string source, string key)
{
using (TripleDESCryptoServiceProvider tripleDESCryptoService = new TripleDESCryptoServiceProvider())
{
using (MD5CryptoServiceProvider hashMD5Provider = new MD5CryptoServiceProvider())
{
byte[] byteHash = hashMD5Provider.ComputeHash(Encoding.UTF8.GetBytes(key));
tripleDESCryptoService.Key = byteHash;
tripleDESCryptoService.Mode = CipherMode.ECB;
byte[] data = Encoding.UTF8.GetBytes(source);
return Convert.ToBase64String(tripleDESCryptoService.CreateEncryptor().TransformFinalBlock(data, 0, data.Length));
}
}
}
Crear un método de descifrado le permite descifrar datos de las cadenas cifradas.
string Decrypt(string encrypt, string key)
{
using (TripleDESCryptoServiceProvider tripleDESCryptoService = new TripleDESCryptoServiceProvider())
{
using (MD5CryptoServiceProvider hashMD5Provider = new MD5CryptoServiceProvider())
{
byte[] byteHash = hashMD5Provider.ComputeHash(Encoding.UTF8.GetBytes(key));
tripleDESCryptoService.Key = byteHash;
tripleDESCryptoService.Mode = CipherMode.ECB;
byte[] data = Convert.FromBase64String(encrypt);
return Encoding.UTF8.GetString(tripleDESCryptoService.CreateDecryptor().TransformFinalBlock(data, 0, data.Length));
}
}
}
Agregar un controlador de eventos de clic al botón Cifrar que le permite cifrar la cadena usando el algoritmo TripleDes.
private void btnEncrypt_Click(object sender, EventArgs e)
{
txtEncrypt.Text = this.Encrypt(txtConnectionString.Text, "real-soft-solutions");
}
Agregar un controlador de eventos de clic al botón Descifrar que le permite descifrar la cadena usando el algoritmo TripleDes.
private void btnDecrypt_Click(object sender, EventArgs e)
{
txtDecrypt.Text = this.Decrypt(txtEncrypt.Text, "real-soft-solutions");
}
Tenga en cuenta que la clave debe ser la misma para las funciones de cifrado y descifrado.
Después de terminar de encriptar la cadena de conexión, puede abrir el archivo app.config, luego agregar la cadena de conexión encriptada al archivo app.config como se muestra a continuación.
<connectionStrings>
<add name="cn" connectionString="Mgye6RzGcs8gV04QGylkMkdOewkdx+J/YILu0hIv4QMQYtzCHRyIEyAMgN6hIJsC1lKy4yxNFAO+ri0Yf4iyyb3p5nmXixTo" providerName="System.Data.SqlClient"/>
</connectionStrings>
Puede crear una clase Helper que le permita obtener la cadena de conexión del archivo app.config en c# como se muestra a continuación.
static string _connectionString;
public static string ConnectionString
{
get
{
if (_connectionString == null)
_connectionString = Decrypt(ConfigurationManager.ConnectionStrings["cn"].ConnectionString, "real-soft-solutions");
return _connectionString;
}
}
Y no olvide agregar la referencia al System.Configuration.dll
Hasta la proxima...