Ulrich- a fantastically detailed post. On Mon, Nov 14, 2016 at 3:23 PM, Ulrich Telle <ulrich.te...@gmx.de> wrote:
> 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 > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users