SQLite con cifrado/protección con contraseña
Recién estoy aprendiendo a usar SQLite y tenía curiosidad por saber si eso es posible:
¿Cifrado del archivo de base de datos?
¿Proteger con contraseña la apertura de la base de datos?
PD. Sé que existe esta "Extensión de cifrado SQLite (SEE)", pero según la documentación, "SEE es software con licencia..." y "El costo de una licencia de código fuente perpetua para SEE es de 2000 dólares estadounidenses".
Aquí hay algunas implementaciones:
- SQLite Encryption Extension (SEE) : la implementación oficial (comercial)
- SQLite3 Multiple Ciphers : una extensión de cifrado para SQLite compatible con múltiples cifrados (código abierto, documentación aquí )
- SQLCipher : utiliza libcrypto de openSSL para implementar el cifrado (versión comercial de código abierto disponible aquí )
- SQLiteCrypt : implementación personalizada, API modificada (comercial)
NOTA: Esta respuesta está desactualizada. El códec CryptoAPI de System.Data.SQLite es un legado no compatible. Mira aquí .
La biblioteca .NET System.Data.SQLite puede proteger con contraseña una base de datos SQLite3. Por primera vez antes de realizar cualquier operación, configure la contraseña de la siguiente manera.
SQLiteConnection conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
conn.SetPassword("password");
conn.open();
Entonces la próxima vez podrás acceder a él como
conn = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;Password=password;");
conn.Open();
Esto no permitirá que ningún editor de GUI vea sus datos. Más adelante, si desea cambiar la contraseña, utilice conn.ChangePassword("new_password");
Para restablecer o eliminar la contraseña, utiliceconn.ChangePassword(String.Empty);