Richard, > Well what I've done is to create an encrypted database with > SQLite2009 and then use that in my C# project. I just add the password to > the connection string in my app and then it works right away.
According to the information on the SQLite2009 website (http://sqlite2009pro.azurewebsites.net/) SQLite2009 supports 2 encryption methods: ** Encryption Method is now compatible with wxSQLite3 (AES-128 bits) and SQLite3 ADO.NET Provider (RSA-MS Crypt) ** I don't know SQLite2009 from own experience, but I assume that it allows you to choose which enryption method to use, when creating a new database. To be compatible with the ADO.NET provider System.Data.SQLite (http://system.data.sqlite.org) you obviously have to choose the corresponding encryption method in SQLite2009. > As far as > I understand (I'm new to all this) you can also create a database from > within your app if it's based on system.data.sqlite. > I just can't edit the table columns or add new ones in SQLite2009 once > the database is saved or reopened, I can only edit the record data. I > just read that once created, you can't (or only very limited) edit the > columns of an SQLite database, you have to create a new database with > the desired structure and copy the data over. I have a bit the impression that you mixed up the terms 'database' and 'table'. A 'database' can contain several tables, and adding new tables or removing existing tables is simple (and should be supported by any SQLite administration tool). However, changing the structure of an existing table in SQLite is more complicated, since SQLite only supports a limited set of operations to modify a table definition. Therefore, if you want to add or remove columns from a table definition, you usually have to create a new table with a different name, copy the data from the previous table to the new one, remove the previous table, and rename the new table to the previous name. > I think that's what DB Browser for SQLite does since you actually can > reopen and edit the columns and their parameters etc. with it. Under the hood DB Browser for SQLite performs the above mentioned steps for you. > It can also create encrypted databases but the encryption scheme it uses > is not supported by system.data.sqlite it seems. Correct. DB Browser for SQLite supports SQLCipher (https://www.zetetic.net/sqlcipher/), an AES-256 encryption scheme. > But all in all it works fine, I'm just a bit concerned with the RSA > encryption in system.data.lite as I've heard it's slow and easy to > crack, so I'd prefer something else. The RSA encryption offered by System.Data.SQLite should not be used, if security is a concern for you. You should prefer an AES encryption scheme. > SQLITE Expert looks interesting but I wonder if it also uses the > built-in RSA encryption in system.data.sqlite? According to the description on the website (http://www.sqliteexpert.com/features.html) SQLiteExpert "Supports password protected databases (requires third party SQLite library - not included)." That is, you have to provide a SQLite3 DLL supporting the encryption scheme of your choice. For example, - SQLCipher (https://github.com/sqlcipher/sqlcipher), you have to build the DLL yourself - wxSQLite3 (https://github.com/utelle/wxsqlite3/releases), Windows binaries are provided Other SQLite3 management tools that support the wxSQLite3 encryption scheme are - SQLite Maestro (https://www.sqlmaestro.com/en/products/sqlite/maestro/about/) - wxSQLitePlus (https://github.com/guanlisheng/wxsqliteplus) > > Richard Andersen wrote: > > In DB Browser for SQlite I can edit the table but I'm not sure if the > > SQLCipher encryption used here can be made to work with > > System.Data.SQlite, or how to do if it can. Does anyone know anything > > about this? In principle, it should be possible to replace the SQLite encryption implementation in System.Data.SQLite by the SQLCipher or wxSQLite3 implementation, although it might not be trivial. The latter should be easier to accomplish, since the wxSQLite3 encryption implementation is self-contained, while SQLCipher requires the OpenSSL library as well. Regards, Ulrich _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users