c# - visual - Cifrar datos de columna con LINQ




quality infosolutions encriptar c# (2)

Debe usar las funciones criptográficas de SQL Server, ENCRYPTBYKEY y DECRYPTBYKEY . Aún mejor, use el Cifrado de base de datos transparente . Ahora encripta y descifra la contraseña con alguna clave almacenada que sepa dónde. Las bases de datos tienen esta mala costumbre de moverse y recuperarse en máquinas completamente nuevas en caso de recuperación de desastres o como parte de varios escenarios de alta disponibilidad, y descubrirá que se almacenan los datos cifrados en la base de datos y la clave de cifrado en la clave del sistema tienda (o peor, en la aplicación) te ha dejado un montón de datos "completamente seguros", imposibles de descifrar porque perdiste la clave.

Me preguntaba si hay una solución fácil para esto o si estoy atascado con lo siguiente:

Al actualizar DB:

dti.Pass = Crypter.Encrypt(dti.Pass);
_db.SubmitChanges();

Al seleccionar desde DB:

Data.DbTableItem dti = _db.Single(a=>a.Id == id);
dti.Pass = Crypter.Decrypt(dti.Pass);

Significado - No me gusta escribir código repetitivo y parece lógico que LINQ lo respalde; así que me pregunto si es así.


Podría agregar una clase parcial con una propiedad que encapsule esta lógica como:

public partial class DbTableItem
{
  public String UnencryptedPass
  {
    get
    {
       return  Crypter.Decrypt(this.Pass);
    }

    set
    {
       this.Pass = Crypter.Encrypt(value)
    }
  }
}

Espero eso ayude : )





linq-to-sql