Sqlite is very good light weight file based relational database system best suitable for portable devices and desktop application.
But in normal Sqlite distribution there is not data encryption using password so any one can access your db very easily if he got that db file.
For protecting your data in sqlite db there are lot of options some are paid and some are free open sourced.
Here are list of some of them
- SQLite Encryption Extension (SEE) : The official implementation and you have to pay for using this extension.
- wxSQLite : A wxWidgets style c++ wrapper that also implements SQLite's encryption.
- SQLCipher : Uses openSSL's libcrypto to implement.
- SQLiteCrypt : Custom implementation, modified API.
- Botan : Botan 1.9.x distributes an implementation under /src/wrap/sqlite (can encrypt using whatever algorithms Botan supports).
- Sqlite.Net : This is Ado.net wrapper library for dotnet platform and this library supports password encryption.
In my opinion if you are going to use sqlite and you need to encrypt your data then you encrypt data on client side using some key/password. But make sure while changing you encryption key/password, update your old data with new password by decrypting it by old password and you should encrypt only required data not all data.