Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   Delphi XE7: TFDSQLiteSecurity wieder nicht für Android und iOS (https://www.delphipraxis.net/181691-xe7-tfdsqlitesecurity-wieder-nicht-fuer-android-und-ios.html)

Darlo 3. Sep 2014 10:37

XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Hallo zusammen,

ich bin jetzt seit 2 Jahren am Suchen wie ich es am besten hinkriege, eine sqlite-Datenbank in einer Anwendung für Win, OS X, iOS und Android (ggf. irgendwann mal Win Phone) am besten zu verschlüsseln. Das/Die/Der TFDSQLiteSecurity funktioniert u.a. unter iOS nicht. Mit XE7 kommt jetzt wenigstens eine Fehlermeldung...

Hat jemand eine Idee/Erfahrung wie man das umsetzen kann? Die IB-Lösung von Emba kommt aufgrund der Lizenzregelung nicht in Frage. Kostenlos muss es nicht sein.

Würde mich über Rückmeldungen freuen, da ich hier einfach nicht weiter komme.

Gruß

mkinzler 3. Sep 2014 11:02

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Hat jemand eine Idee/Erfahrung wie man das umsetzen kann? Die IB-Lösung von Emba kommt aufgrund der Lizenzregelung nicht in Frage. Kostenlos muss es nicht sein.
Welche Lizenzregelung meinst Du? IBLite ist ab XE7 nun doch auch für Windows dabei.

Darlo 3. Sep 2014 11:08

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Ja, aber ohne Verschlüsselung... Man braucht dann das Interbase ToGo, und das kostet pro Gerät.

mkinzler 3. Sep 2014 11:23

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Liste der Anhänge anzeigen (Anzahl: 2)
LiteDAC/UndiDAC von DevArt scheint mit Verschlüsselung von SQLite klarzukommen ( statisch ohne Client Bibliothek)

http://www.devart.com/litedac/

Darlo 3. Sep 2014 11:27

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Ja aber leider auch nur für Windows:

-> SQLite database encryption in Direct mode

Und der "Direct Mode" läuft nur unter Win32/x64

Mavarik 3. Sep 2014 11:30

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Darlo (Beitrag 1270824)
Hallo zusammen,

ich bin jetzt seit 2 Jahren am Suchen wie ich es am besten hinkriege, eine sqlite-Datenbank in einer Anwendung für Win, OS X, iOS und Android (ggf. irgendwann mal Win Phone) am besten zu verschlüsseln.

Delphi-Quellcode:
FSQLConnection.Params.Values['Password'] := FPassword;
Oder habe ich jetzt etwas falsch verstanden?

Mavarik

Darlo 3. Sep 2014 11:39

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Mavarik (Beitrag 1270845)
Delphi-Quellcode:
FSQLConnection.Params.Values['Password'] := FPassword;
Oder habe ich jetzt etwas falsch verstanden?

Mavarik

Delphi-Quellcode:
  FdConnection1.Params.Values['Database'] := GetHomePath + PathDelim +
      'Documents' + PathDelim + 'test.sqlite';
  FdConnection1.Params.Values['Password'] := 'test';

  FdConnection1.Connected := true;
Meldung unter iOS:
[FireDac][Phys][SQLite][sqlite3]-303.
Funktionalität wird nicht unterstützt.

Sir Rufo 3. Sep 2014 11:54

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
AFAIK liegt das aber nicht an FireDAC oder sonstigen Bibliotheken, sondern an Android und iOS selber, denn da ist das Verschlüsselungsgeraffel nicht dabei

Darlo 3. Sep 2014 11:59

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Im Direct Mode ist die sqlite-lib ja auch von devart selber um die Verschlüsselung erweitert.
Ich brauche hier "eigentlich" dringend eine Lösung, gerade auf mobilen Geräten kommt man nicht um die lokale Verschlüsselung rum.

Sir Rufo 3. Sep 2014 12:03

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Darlo (Beitrag 1270853)
Im Direct Mode ist die sqlite-lib ja auch von devart selber um die Verschlüsselung erweitert.
Ich brauche hier "eigentlich" dringend eine Lösung, gerade auf mobilen Geräten kommt man nicht um die lokale Verschlüsselung rum.

Ja, aber im direct-mode ist AFAIK der SQLite-Code direkt eingebunden (es wird daher auch keine DLL benötigt) und benutzt dort eine SQLite-Version mit Verschlüsselung.
Auf den Mobile Devices ist aber ein SQLite Version ohne Verschlüsselung.

Darum geht das da eben nicht einfach mal eben so

Darlo 3. Sep 2014 12:14

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Ja, dass das leider nicht mal ebenso geht habe ich leider auch bemerkt. Wie es scheint, kann man ja bei den Dacs von DevArt eine eigene ClientLibrary mitgeben. Wenn diese dann Verschlüsselung unterstützt sollte es ja klappen.
Die Frage ist nur welche zu empfehlen ist. SQLCipher sieht passend aus, nur wenn man das für Win, OS X, iOS und Android braucht wird es teuer.

Sir Rufo 3. Sep 2014 12:22

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Das gibt es auch als OpenSource
https://www.zetetic.net/sqlcipher/open-source
hat aber durchaus Unterschiede zur Kaufversion

Darlo 3. Sep 2014 12:26

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Generell ist mir nur unklar:

a) Wie funktioniert die Einbindung konkret?
b) Können dann verschlüsselte DB's zwischen Win, OS X, iOS, Android ausgetauscht werden und sind kompatibel?

Ich blick da nicht wirklich durch.

Mavarik 3. Sep 2014 12:28

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Darlo (Beitrag 1270847)
Meldung unter iOS:
[FireDac][Phys][SQLite][sqlite3]-303.
Funktionalität wird nicht unterstützt.

Kann ich nicht bestätigen, da ich diese Funktionalität auf Windows / iOS & Android nutze!

Mavarik

Darlo 3. Sep 2014 12:31

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Mavarik (Beitrag 1270865)
Zitat:

Zitat von Darlo (Beitrag 1270847)
Meldung unter iOS:
[FireDac][Phys][SQLite][sqlite3]-303.
Funktionalität wird nicht unterstützt.

Kann ich nicht bestätigen, da ich diese Funktionalität auf Windows / iOS & Android nutze!

Mavarik

Auch mit XE7? Hast du mal geprüft ob die Datenbank unter iOS wirklich verschlüsselt ist. Wenn Du die DB mal im Editor öffnest sollte alles unverschlüsselt sein.
Neu unter XE7 (oder schon XE6??) ist, dass jetzt eine Fehlermeldung kommt.

Mavarik 3. Sep 2014 12:35

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Darlo (Beitrag 1270867)
Auch mit XE7? Hast du mal geprüft ob die Datenbank unter iOS wirklich verschlüsselt ist. Wenn Du die DB mal im Editor öffnest sollte alles unverschlüsselt sein.
Neu unter XE7 (oder schon XE6??) ist, dass jetzt eine Fehlermeldung kommt.

LOL... Siehe anderen Thread :lol:

Mit XE6 funktioniert das problemlos... Mit XE7 kann ich meine App noch nicht übersetzen, dafür muss ich erst einiges $IFDEFen was sich in XE7 geändert hat.

Mavarik

Darlo 3. Sep 2014 12:39

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
?
Verrätst Du mir auch wie Du es gemacht hast? FSqlConnection, welcher Type ist das?

Mavarik 3. Sep 2014 19:45

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Darlo (Beitrag 1270871)
Verrätst Du mir auch wie Du es gemacht hast? FSqlConnection, welcher Type ist das?

Klar

Delphi-Quellcode:
...
SQLConnection : TFDConnection;
...

procedure TSQLite.SQLConnectionBeforeConnect(Sender: TObject);
begin
  SQLConnection.Params.Values['DriverName'] := 'SQLite';
  SQLConnection.Params.Values['DriverUnit'] := 'Data.DbxSqlite';
  SQLConnection.Params.Values['DriverPackageLoader'] := 'TDBXSqliteDriverLoader,DBXSqliteDriver190.bpl';
  SQLConnection.Params.Values['MetaDataPackageLoader'] := 'TDBXSqliteMetaDataCommandFactory,DBXSqliteDriver190.bpl';

  FSQLConnection.Params.Values['Database'] := GetbaseFileName;
  FSQLConnection.Params.Values['ColumnMetadataSupported'] := 'False';
  FSQLConnection.Params.Values['FailIfMissing'] := 'False';

  if Trim(FPassword) <> '' then
    FSQLConnection.Params.Values['Password'] := FPassword;
end;
Mavarik

Darlo 4. Sep 2014 09:05

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Hi Mavarik,

danke für den Code. Leider kommt weiterhin folgende Fehlermeldung:
Zitat:

[FireDac][Phys][SQLite][sqlite3]-303.
Funktionalität wird nicht unterstützt.
Ich habe ein neues Projekt erstellt und bin wie folgt vorgegangen:
1. TFDConnection auf das Form gelegt und Drivername auf SQLite gesetzt
2. TButton auf das Form gelegt
3. Beim OnClick des Buttons:
Delphi-Quellcode:
FdConnection1.Connected := true;
4. Im BeforeConnect der TFDConnection
Delphi-Quellcode:
  FdConnection1.Params.Values['DriverName'] := 'SQLite';
  FdConnection1.Params.Values['DriverUnit'] := 'Data.DbxSqlite';
  FdConnection1.Params.Values['DriverPackageLoader'] := 'TDBXSqliteDriverLoader,DBXSqliteDriver190.bpl';
  FdConnection1.Params.Values['MetaDataPackageLoader'] := 'TDBXSqliteMetaDataCommandFactory,DBXSqliteDriver190.bpl';

  FdConnection1.Params.Values['Database'] := GetHomePath + PathDelim +
      'Documents' + PathDelim + 'test.sqlite';;
  FdConnection1.Params.Values['ColumnMetadataSupported'] := 'False';
  FdConnection1.Params.Values['FailIfMissing'] := 'False';
  FdConnection1.Params.Values['Password'] := 'test';
Was mache ich falsch?

Mavarik 4. Sep 2014 12:34

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Es fehlt ein uses... Bin in Bonn du auch ?

mkinzler 4. Sep 2014 12:45

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Mavarik (Beitrag 1271015)
Es fehlt ein uses... Bin in Bonn du auch ?

Und sagst Du ihm auch wleche Unit eingebunden werden muss?

Darlo 4. Sep 2014 14:18

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Nein, bin nicht in Bonn. Werde nächstes Jahr mal vorbeischauen, bis jetzt noch nie dazu gekommen.
Habe jetzt alles an Data-Klassen und FireDac.Phys-Klassen eingebunden. Ergebnis ist unverändert.

Mavarik 4. Sep 2014 14:32

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von mkinzler (Beitrag 1271017)
Zitat:

Zitat von Mavarik (Beitrag 1271015)
Es fehlt ein uses... Bin in Bonn du auch ?

Und sagst Du ihm auch wleche Unit eingebunden werden muss?

Ja, wenn ich mehr als mein iPhone in der Hand habe und nicht mehr im Workshop bin

Mavarik 5. Sep 2014 09:10

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Mavarik (Beitrag 1271037)
Ja, wenn ich mehr als mein iPhone in der Hand habe und nicht mehr im Workshop bin

So ich denke es war der "Uses Data.DBXSQLite"... So hatte ich es im Kommentar stehen...

Wenn es nicht funktioniert, schick mir ne PM dann schicke ich dir mal ne Unit.

Mavarik

Darlo 6. Sep 2014 17:18

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Danke für die Antwort. Die unit hatte ich schon drin. Setze mal die Testanwendung neu auf.
Wäre echt um ein großen Problem erleichtert wenn das klappen würde.

Mavarik 6. Sep 2014 18:03

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Darlo (Beitrag 1271346)
Danke für die Antwort. Die unit hatte ich schon drin. Setze mal die Testanwendung neu auf.
Wäre echt um ein großen Problem erleichtert wenn das klappen würde.

Melde Dich einfach wenn es immer noch nicht klappt...

Mavarik

Darlo 8. Sep 2014 08:44

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Mavarik,

leider funktioniert es bei mir nicht. Unter iOS weiterhin die Meldung dass die Funktion nicht unterstützt wird.
Anbei mal das Test-Projekt.

Gruß

Mavarik 8. Sep 2014 09:03

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Darlo (Beitrag 1271520)
Hallo Mavarik,

leider funktioniert es bei mir nicht. Unter iOS weiterhin die Meldung dass die Funktion nicht unterstützt wird.
Anbei mal das Test-Projekt.

Gruß

Ich teste das mal!

hmm, kann den Fehler auch mit XE6 bestätigen...
Ich schau mal was zu ändern ist...

Mavarik 13. Sep 2014 13:42

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Omg rtfm...

Hatte ich aber auch vergessen!

Zitat:

Password legt ein passwort für eine verschlüsselte datenbank fest. Der wert kann die folgende form haben: [ aes-128 | aes-192 | aes-256 | aes-ctr-128 | aes-ctr-192 | aes-ctr-256 | aes-ecb-128 | aes-ecb-192 | aes-ecb-256 :] <passwort> das optionale präfix steuert den zu verwendenden verschlüsselungsalgorithmus. Der vorgabewert ist ein leerer string, was "unverschlüsselter modus" bedeutet. Aes-256:12345
qwe12345qwe

NewPassword legt ein neues passwort für eine datenbank fest und führt eine verschlüsselungsoperation durch: Geben sie ein nicht-leeres "newpassword" und ein leeres "password" an, um eine unverschlüsselte datenbank zu verschlüsseln.
geben sie ein leeres "newpassword" und ein nicht-leeres "password" an, um eine verschlüsselte datenbank zu entschlüsseln.
Geben sie ein nicht-leeres "newpassword" und ein nicht-leeres "password" an, um das passwort einer verschlüsselten datenbank zu ändern.


Darlo 15. Sep 2014 08:33

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Gleich mal ausprobieren! Bin ja gespannt!

Darlo 19. Sep 2014 08:50

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Hi,

funktioniert bei mir leider nicht...
Delphi-Quellcode:
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, Data.DBXSQLite,
  FireDAC.Stan.Intf, FireDAC.Stan.Option, FireDAC.Stan.Error, FireDAC.UI.Intf,
  FireDAC.Phys.Intf, FireDAC.Stan.Def, FireDAC.Stan.Pool, FireDAC.Stan.Async,
  FireDAC.Phys, FireDAC.Phys.SQLite, FireDAC.Phys.SQLiteDef,
  FireDAC.Stan.ExprFuncs, FireDAC.Stan.Param, FireDAC.DatS, FireDAC.DApt.Intf,
  FireDAC.DApt, FMX.StdCtrls, Data.DB, FireDAC.Comp.DataSet, FireDAC.Comp.Client,
  FireDAC.FMXUI.Wait, FireDAC.Comp.UI;


procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
begin
  FdConnection1.Params.Values['DriverName'] := 'SQLite';
  FdConnection1.Params.Values['DriverUnit'] := 'Data.DbxSqlite';
  FdConnection1.Params.Values['DriverPackageLoader'] := 'TDBXSqliteDriverLoader,DBXSqliteDriver190.bpl';
  FdConnection1.Params.Values['MetaDataPackageLoader'] := 'TDBXSqliteMetaDataCommandFactory,DBXSqliteDriver190.bpl';

  FdConnection1.Params.Values['Database'] := FDbFile;
  FdConnection1.Params.Values['ColumnMetadataSupported'] := 'False';
  FdConnection1.Params.Values['FailIfMissing'] := 'False';
  FdConnection1.Params.Values['Password'] := 'AES-256:test';
end;
Fehler:
Funktionalität wird nicht unterstützt.

Sir Rufo 19. Sep 2014 13:25

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Seid ihr beide euch aber auch wirklich einig, dass ihr von FireDAC sprecht und nicht von dbExpress?

Die Quellen von Maverick riechen nämlich ganz stark nach dbExpress
http://docwiki.embarcadero.com/RADSt...OS_und_Android)

Zum Thema FireDAC und verschlüsselte SQlite-Datenbank gibt es eine Aussage von Dmitry Arefiev / FireDAC Architect (der muss es wissen)
http://codeverge.com/embarcadero.delphi.firedac/-android-is-firedac-not-support-en/1090005

Hello

FireDAC SQLite encryption is implemented using custom
codec implementation in sqlite3.c. This requires static linking
of sqlite3.obj. It is implemented only for Windows platforms.
IOW, FireDAC SQLite encryption at moment is not supported
on mobile platforms.

--
With best regards,
Dmitry Arefiev / FireDAC Architect
FireDAC - Firebird, SQLite, MySQL, SQL Server, Oracle, PostgreSQL,
DB2, SQL Anywhere, Access, Informix, ODBC high-speed data access lib

Mavarik 19. Sep 2014 23:48

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Darlo (Beitrag 1273095)
Hi,

funktioniert bei mir leider nicht...

hmm... s.o.

Zitat:

Zitat von Mavarik (Beitrag 1272463)
NewPassword legt ein neues passwort für eine datenbank fest und führt eine verschlüsselungsoperation durch: Geben sie ein nicht-leeres "newpassword" und ein leeres "password" an, um eine unverschlüsselte datenbank zu verschlüsseln.
geben sie ein leeres "newpassword" und ein nicht-leeres "password" an, um eine verschlüsselte datenbank zu entschlüsseln.
Geben sie ein nicht-leeres "newpassword" und ein nicht-leeres "password" an, um das passwort einer verschlüsselten datenbank zu ändern.

Delphi-Quellcode:
...
  FdConnection1.Params.Values['Newpassword'] := 'AES-256:test';
...
end;

Darlo 24. Sep 2014 10:19

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Hallo Mavarik,

ich bekomme es einfach nicht hin.... Kannst Du mir ein Beispielprojekt hochladen???

Delphi-Quellcode:
procedure TForm1.FDConnection1BeforeConnect(Sender: TObject);
begin
  FdConnection1.Params.Values['DriverName'] := 'SQLite';
  FdConnection1.Params.Values['DriverUnit'] := 'Data.DbxSqlite';
  FdConnection1.Params.Values['DriverPackageLoader'] := 'TDBXSqliteDriverLoader,DBXSqliteDriver190.bpl';
  FdConnection1.Params.Values['MetaDataPackageLoader'] := 'TDBXSqliteMetaDataCommandFactory,DBXSqliteDriver190.bpl';

  FdConnection1.Params.Values['Database'] := FDbFile;
  FdConnection1.Params.Values['ColumnMetadataSupported'] := 'False';
  FdConnection1.Params.Values['FailIfMissing'] := 'False';
  FdConnection1.Params.Values['password'] := '';
  FdConnection1.Params.Values['newpassword'] := 'Aes-256:12345qwe12345qwe';
end;

Mavarik 24. Sep 2014 11:30

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Zitat:

Zitat von Darlo (Beitrag 1273626)
Hallo Mavarik,

ich bekomme es einfach nicht hin.... Kannst Du mir ein Beispielprojekt hochladen???

Na aber klar doch...

Darlo 13. Okt 2014 09:13

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
*push* :angel2:

Darlo 16. Apr 2015 20:34

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
DevArt hats gerichtet! In Den neuen DACs ist der directmode nun auch für os x, iOS und Android verfügbar uns somit auch die encryption.

r_amse_s 21. Apr 2015 22:43

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
somit schon wieder kein natives Support in XE8 für iOS & Android bzgl. Verschlüsselung?

Darlo 22. Apr 2015 07:00

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
Eine native sqlite-Verschlüsselung gibt es doch garnicht(?).

r_amse_s 22. Apr 2015 13:14

AW: XE7: TFDSQLiteSecurity wieder nicht für Android und iOS
 
ok, dann "halb native" in firedac inkludiert, sodass man dafür nicht eine externe compo braucht (zb devart)


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:15 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz