Encrypted sqlite database + Another Dev Tool

I have a Mac, Windows, Linux and iOS version of my app that uses the built-in Xojo sqlite database with password encryption. I want to create an Android version with another development tool (maybe Basic4Android) since Xojo doesn’t currently support Android… But I need to make sure that my Android app can open encrypted databases created by my Xojo apps… Has anyone done this? Is this something that can be easily done by using an open/third party library?


it requires use of Dr Hipps encryption add on for SQLite
Thats the only code that correctly opens an encrypted database from Xojo
Its a $2000 license which most other devs don’t want to pay

I have looked into this, and it appears that the encryption used by sqlite databases in Xojo is generally incompatible with just about everything else. I believe they are using the SEE encryption extension offered by SQLite (http://www.sqlite.org/see/doc/trunk/www/index.wiki) and I have not found other tools that can open and use the databases produced by Xojo apps.

There are other encryption libraries available for use in Android. If you need database-level encryption, I recommend using SQLCipher - but this will only allow you to encrypt databases on Android. It will not open databases produced by Xojo apps.

Like I said most other devs are not willing to expend the one time 2000 cost to get it from the original SQLIte author.
But other encryption libs dont work the same way as Dr Hipps.
The data is left encrypted as long as it possibly can be and even queries use encrypted data.

MBS SQL Plugin includes SEE and can use the encrypted databases.
And you can use SQL Cipher extension with Our SQL plugin as well.

I wish more devs would support SEE. There is no reason not too (except too cheap to pay the one time fee of $2000).

You know his encryption will always work.

Thanks everyone… I just emailed B4A support and asked them if they include SEE, you never know, maybe they do… I will let you guys know what they say.

[quote=235731:@Christian Schmitz]MBS SQL Plugin includes SEE and can use the encrypted databases.
And you can use SQL Cipher extension with Our SQL plugin as well.[/quote]
However, this:

unfortunately rules out the MBS plugins for the OP…

Sorry. I’d love to build plugins for iOS, but without an SDK…

I know. As I said, unfortunate…

Actually the database encryption works in iOS… I was talking about using it in another development tool (such as Basic4Android) – since Xojo currently doesn’t support Android.

Unless you can find an android SDK or SQLITe component that uses the same SEE encryption you cant use that encryption on iOS AND android & whatever else.
At least not with the same database if you intend to share it from one OS to another
Is that your intention or are these all standalone databases that are never shared across Android, iOS , desktop web etc ?

Yes I want to share the same database file between the different platforms… Currently I share the same database file between Mac, Windows, Linux and iOS, and now I want to add Android.

So now I’m on the hunt for a good RAD Android development tool that includes SEE encryption. I’m hoping Basic4Android has this, just waiting for their customer service to email me back…

I just need to build a small companion app to my desktop software. I did it in Xojo iOS in about 3 weeks! And it was my first ever iOS app! Pretty awesome.

P.S. This has been asked a billion times and I know it’s not a trivial issue and it’s a long shot… But is it possible that we will have Xojo Android support in the next 6-12 months? Just being hopeful :wink:

6 to 12 months for Android? What would they do with the other 5 to 11 months?


They just emailed me back and unfortunately Basic4Android doesn’t have built-in SEE support…

I suspect they just use whatever is on the OS itself which does not include such support
Thats not surprising
We specifically build our runtime for iOS with SQLite + SEE in it instead of using the one on iOS as it does not include SEE as far as I know

[quote=235764:@Kem Tekinay]6 to 12 months for Android? What would they do with the other 5 to 11 months?

Figure out how to torture Kem for this post :slight_smile:

So back to the drawing board… This looks interesting:


So I may just write the Android app as a Windows app and then use WINE to run the Windows app on Android. Lol t’s convoluted but it may just work… Supposedly WINE will be available for Android soon. CrossOver already seems to support Windows->Android porting now: https://www.codeweavers.com/porting

SQLite for iOS (ie. via ObjC or Swift) do not (by default) offer encryption… there are dozens if not hundreds of specialized library to add SQLite to a ObjC/Swift project, some support SEE, some have their own, others support no encyption…

What I ended up doing, since I made the mistake of implementing one that had no encryption before I realized it wasn’t “standard”… was to subclass the routines that read / write to the table and have them encrypt/decryhpt the data there instead.

the upside to the SEE additions is that the data is encrypted and all queries etc use that encrypted data as is
its just not “standard” despite it being, IMHO, the best of the available options