viernes, 13 de agosto de 2010

Encriptar Base de Datos SQLite

Para encriptar una base de datos que no este encriptada, o si se desea cambiar el password de una que ya esta encriptada se debe abrir la base de datos y utilizar el método ChangePassword() de la clase SQLiteConnection como sigue:

// Opens an unencrypted database

SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");

cnn.Open();

// Encrypts the database. The connection remains valid and usable afterwards.

cnn.ChangePassword("mypassword");

Para desencriptar una base datos encriptada se debe llamar al método ChangePassword() con el valor NULL o vacío "" en el password:

// Opens an encrypted database

SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3;Password=mypassword");

cnn.Open();

// Removes the encryption on an encrypted database.

cnn.ChangePassword(null);

Para abrir una base de datos que se encuentre encriptada, o crear una nueva con encriptación habilitada, se debe especificar el password en el ConnectionString, o llamar al método SetPassword() antes de abrir una nueva conexión utilizando la clase SQLiteConnection. El password ingresado en dicha cadena de conexión debe ser "cleartext" o puras cadenas de caracteres (no binario), y el password ingresado en el método SetPassword() puede ser un arreglo binario de bytes (binary byte arrays)

// Opens an encrypted database by calling SetPassword()

SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");

cnn.SetPassword(new byte[] { 0xFF, 0xEE, 0xDD, 0x10, 0x20, 0x30 });
cnn.Open();

// The connection is now usable

Por defecto la palabra clave ATTACH usará la misma llave de encriptación que la base de datos principal cuando se agrega a otro archivo de base de datos con la misma conexión. Para cambiar este comportamiento se debe utilizar el modificador KEY:

Si estas agregando una base de datos encriptada debes utilizar el password con "cleartext"

// Attach to a database using a different key than the main database

SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");

cnn.Open();

cmd = new SQLiteCommand("ATTACH DATABASE 'c:\\pwd.db3' AS [Protected] KEY 'mypassword'", cnn);

cmd.ExecuteNonQuery();

Para agregar una base de datos encriptada usando un password en binario:

// Attach to a database encrypted with a binary key

SQLiteConnection cnn = new SQLiteConnection("Data Source=c:\\test.db3");

cnn.Open();

cmd = new SQLiteCommand("ATTACH DATABASE 'c:\\pwd.db3' AS [Protected] KEY X'FFEEDD102030'", cnn);

cmd.ExecuteNonQuery();


Referencia de aqui: http://sqlite.phxsoftware.com/forums/t/130.aspx

c'ya..

No hay comentarios:

Publicar un comentario