German FDSQLiteSecurity encrypt SQLite database

Palle

Member
Licensed User
Hallo,

meine Kundensoftware wurde unter Windows mit Delphi entwickelt und die SQLite Datenbank mit FDSQLiteSecurity (FireDAC) aes-128 verschlüsselt. Um auch unter Android auf die Kundendaten zugreifen zu können, habe ich mit B4A eine entsprechende App erstellt, die auch soweit mit der unverschlüsselten DB läuft. Nun möchte ich aber die Kundendaten nicht unverschlüsselt auf dem Smartphone ablegen, daher meine Frage: Gibt es mit B4A eine Möglichkeit, die mit FDSQLiteSecurity verschlüsselte DB zu entschlüsseln? Habe bereits gegoogelt und einiges ausprobiert, jedoch ohne Erfolg.

Vielleicht stand schon jemand vor diesem Problem und hat eine Lösung.

Palle
 

musaso

Active Member
Licensed User
Hello, I also had that problem but it can not be decrypted because the types of encryption are different.
Sorry for my English (Google)
 

Palle

Member
Licensed User
Hello, thanks for the answer. Yes, that's a problem. I have a trial version of Delphi 10, so you can also create Android apps. Delphi uses FireDac here and the decryption works fine on Android. But I programmed the customer app with B4A and would like to have the encryption in it. (Google Translate)

Palle
 

Palle

Member
Licensed User
Habe ich probiert, aber diese Entschlüsselung funktioniert hier leider nicht. Es scheint ein anderer Algorithmus zu sein.
 

OliverA

Expert
Licensed User
Longtime User
Um auch unter Android auf die Kundendaten zugreifen zu können, habe ich mit B4A eine entsprechende App erstellt, die auch soweit mit der unverschlüsselten DB läuft.
So you have an app that works, but you just need encryption. Then why not use SQLCipher? What is the issue? Right here you say the app works fine un-encrypted and you just need encryption. SQLCipher fits that bill.

Was ist das problem? Die App funktioniert, nur fehlt dass verschluesseln der Daten. SQLCipher kann das.
 

Palle

Member
Licensed User
Die DB liegt verschlüsselt im Netzwerk und wird von der App in Android übernommen.
 

OliverA

Expert
Licensed User
Longtime User
Die DB liegt verschlüsselt im Netzwerk und wird von der App in Android übernommen.
Who controls the network? Is this a one time "import" to the device?

Wer kontrolliert das Netzwerk? Ist das eine einmaliger datentransfer from Netz zum Handi?
 

Palle

Member
Licensed User
Die DB wird nur auf dem Windows PC bearbeitet und über FDSQLiteSecurity verschlüsselt auf dem NAS Laufwerk gespeichert. Ich brauche aber die aktuellen Daten auch unabhängig vom PC auf dem Smartphone. Die DB wird also öfter von der NAS aufs Handy kopiert und von der App übernommen. Und hier muss die Entschlüsselung stattfinden. Ansonsten wäre es einfacher, eine unverschlüsselte DB unter Android mit SQLCipher zu behandelt. Diesen Aufwand wollte ich mir jedoch ersparen. Im Grunde geht es um die korrekte Entschlüsselung bei der ersten Übernahme. Wie es danach unter Android ver- und entschlüsselt wird ist eigentlich egal, da die DB ja nicht wieder auf das NAS zurück kopiert wird.
 

OliverA

Expert
Licensed User
Longtime User
Yes, it is. FireDAC SQLite driver encryption is proprietary solution.
Really, there is no SQLite standard encryption mechanism.

But there are some 3d party SQLite DLL's, which do support encryption,
and other tools may use them to read / write SQLite encrypted DB.
For example: https://www.zetetic.net/sqlcipher/
Source: https://forums.embarcadero.com/message.jspa?messageID=871623

Some choices: 1) Wait for Delphi 10, 2) Switch cipher, 3) create middleware that decrypts FireDac and recrypts to SQLite before storing on NAS.
 
Top