2012-08-30 25 views
15

Estoy usando la base de datos SQLite versión 3 con la aplicación C# Windows. quiero cifrar el archivo de base de datos SQLite usando contraseña o cualquier otra forma de cifrado para evitar que los clientes lo abran desde la carpeta de archivos de programa.¿Puedo encriptar la base de datos SQLite?

No quiero ningún formas de cifrado en tiempo de ejecución, sólo quiero hacer que el campo Mostrar contraseña archivo de base cuando un cliente intente abrirlo desde los archivos de programa .. gracias

Edición

y si lo cifré desde el código, el cliente puede abrirlo cuando la instalación se complete y el archivo db se transfiera a los archivos del programa antes de abrir el programa para realizar el cifrado, ¿verdad?

+0

posible duplicar: http://stackoverflow.com/questions/1381264/password-protect-a-sqlite-db-is-it-possible –

+1

Creo que Hassan está buscando un cifrado que no sea en tiempo de ejecución. –

Respuesta

22

que utiliza la versión de SQLite 3 funciona perfectamente! Tienes que hacer lo siguiente:

//if the database has already password 
try{ 
      string conn = @"Data Source=database.s3db;Password=Mypass;"; 
      SQLiteConnection connection= new SQLiteConnection(conn); 
      connection.Open(); 
      //Some code 
      connection.ChangePassword("Mypass"); 
      connection.Close(); 
    } 
//if it is the first time sets the password in the database 
catch 
    { 
      string conn = @"Data Source=database.s3db;"; 
      SQLiteConnection connection= new SQLiteConnection(conn); 
      connection.Open(); 
      //Some code 
      connection.ChangePassword("Mypass"); 
      connection.Close(); 
    } 

a partir de entonces, si el usuario intenta abrir la base de datos. dirá protegido por el administrador o la base de datos está encriptada o no es una base de datos o archivo corrupto!

+0

si aplico este código en alguna base de datos sqlite y se convierte en cifrado, ¿qué sucede si quiero editar alguna tabla en la base de datos manualmente, quiero decir que hay alguna forma de descifrarla? ¿Qué código necesito escribir para eso? – Mogli

+0

Creo que no hay otra forma de código. lo que puede hacer es crear una aplicación independiente con este código, pone la contraseña en blanco y pide la contraseña anterior para acceder a ella –

+0

utilicé este con.Open(); con.ChangePassword ("Mypass"); con.Close(); ahora está encriptado ahora quiero cambiarlo manualmente y quiero abrirlo ¿qué debo hacer? – Mogli

1

Desafortunadamente, la contraseña en el archivo SQlite se puede agregar o eliminar o cambiar solo desde el código. Para eso necesita System.Data.SQLite espacio de nombres que le dará los métodos, así como adaptadores y cosas de conexiones para hacerlo.

+0

gracias por su interés, pero si lo hice desde el código, el cliente puede abrirlo cuando la instalación se complete y el archivo _db_ se transfiera a los archivos del programa, ¿no? – Hassanation

+0

ya que el código de cifrado no se aplicará hasta que el programa ejecute – Hassanation

2

se encuentran en este forum un puesto que indica que ..

Standard SQLite3 API doesn't offer any form of protection and relies only on underlying OS privileges mecanism (if any) for "security". If you have an existing SQLite-style database which uses a specific API to gain access, then you should use this particular (non-standard) API.

Si puede/quiere utilizar algún tipo de extensión para SQLite también puede probar SQLite Encryption Extension (SEE) o SQLite Crypt

Pero se puede cambie/establezca una contraseña para su base de datos usando SQLite.Data como se muestra en this article.

+0

si utilicé algún tipo de extensión para él, ¿funcionará bien la conexión ya que es con la misma extensión? – Hassanation

+0

¿Quiere decir si usa alguna extensión para encriptar, si aún es posible crear y abrir una conexión a esta base de datos desde C#? –

+0

sí exactamente lo que quise decir :) – Hassanation

0

Probar sqlitestudio.pl como editor.
Para Tipo de base de datos, elija System.Data.SQLite mientras se conecta.

Cuestiones relacionadas