AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung SQLite iOS encrypt password klappt nicht
Thema durchsuchen
Ansicht
Themen-Optionen

SQLite iOS encrypt password klappt nicht

Ein Thema von schotti65 · begonnen am 24. Jan 2014 · letzter Beitrag vom 26. Jan 2014
Antwort Antwort
schotti65

Registriert seit: 3. Sep 2010
Ort: Berlin
53 Beiträge
 
Delphi XE5 Enterprise
 
#1

SQLite iOS encrypt password klappt nicht

  Alt 24. Jan 2014, 21:21
Ich verwende eine SQLite Datenbank.
Das "Backend" (Windows VCL) pflegt diese, die iOS-App (FMX mobile) (iPad iOS7) liest diese.
Die *.sdb für die App wird beim deployen mitverteilt und später via FTP aktualisiert.
Alles hat im Prinzip schon funktioniert.

Jetzt habe ich die *.sdb verschlüsselt, im Backend unter Windows:
Delphi-Quellcode:
  FDSQLiteSecurity1.Database := FDConnection1.Params.Values['Database'];
  FDSQLiteSecurity1.Password := constCryptDatabasePassword;
  FDSQLiteSecurity1.SetPassword;
Im Backend alles schön, das Öffnen geht danach wie folgt:
Delphi-Quellcode:
function openDb(cPath : string; db : TFDConnection) : boolean;
begin
  if cPath <> 'then begin
    db.Params.Values['Database'] := cPath;
  end;

  db.Params.Values['LockingMode'] := 'normal';
  db.Params.Values['Password'] := constCryptDatabasePassword; // ohne diese Zeile hatte alles funktioniert...

  db.Connected := true;

  ...

  result := true;
end;
Im Backend geht das auch wunderbar.
ABER in der App kommt die Fehlermeldung

"...file is encrypted or is not a database"

Als Gegenprobe habe ich die PW-Konstante geändert und bekomme dann im Backend "...invalid password is specified or db is corrupted".
In der App wie oben.
(D.h. in der App wird das PW nicht falsch interpretiert (könnte ja sein, das iOS automatisch ein "aesXYZ-" davor setzt o.ä.) - denn dann käme ja auch in der App diese Fehlermeldung, sondern einfach nicht beachtet)

Der obige Code zum Öffnen wird gleichermassen von der App und vom Backend benutzt.
(Ich hab also keinen Schreibfehler gemacht)

Es ist, als ob die SQLite-Bibliothek (sagt man unter iOS so?) sich gar nicht für den Parameter "Password" interessieren würde... ("password" mit kleinem "p" hab ich auch probiert)

Hat jemand eine Idee?

PS: in der Doku http://docwiki.embarcadero.com/RADSt...te_mit_FireDAC liest sich das für mich so, als ob "Password" unter iOS auch funzen sollte...

Geändert von schotti65 (24. Jan 2014 um 21:24 Uhr) Grund: was vergessen
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: SQLite iOS encrypt password klappt nicht

  Alt 24. Jan 2014, 23:07
Der Mist ist, dass es mobil nicht unterstützt wird...
Ärgert mich extrem!
Philip

Geändert von Darlo (25. Jan 2014 um 13:16 Uhr)
  Mit Zitat antworten Zitat
schotti65

Registriert seit: 3. Sep 2010
Ort: Berlin
53 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: SQLite iOS encrypt password klappt nicht

  Alt 25. Jan 2014, 09:39
Wie kommst Du denn darauf, kannst Du das etwas präzisieren?

Ich hab jetzt in alle möglichen Richtungen (apple embarcadero anydac) gesucht und nirgendwo eine definitive Aussage gefunden.
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#4

AW: SQLite iOS encrypt password klappt nicht

  Alt 25. Jan 2014, 13:16
Erkenntnis vom 02.09.2013:

Frage von mir:
Zitat:
Am 30.08.2013 um 11:39 schrieb x


Hallo Herr Y,

vielen Dank für Ihre Antwort. Das SQLiteSecurity Ding funktioniert unter Windows problemlos. Nur unter iOS wird es nicht ausgeführt….

Über eine Rückmeldung ob ich mich nur anstelle, oder diese Funktion unter iOS nicht funktioniert wäre ich Ihnen sehr dankbar.

Delphi-Quellcode:
procedure TForm1.ADConnection1AfterConnect(Sender: TObject);
begin
  adQuery1.SQL.Text := 'CREATE TABLE IF NOT EXISTS whatEver( '+
    'dsid varchar(50) NOT NULL,'+
    'pid varchar(50) NOT NULL,'+
    'kurzfristig varchar(128),'+
    'mittelfristig varchar(128),'+
    'langfristig varchar(128),'+
    'datumLetzte date,'+
    'inhaltLetzte text,'+
    'vonWemLetzteg varchar(50),'+
    'personen_nr integer,'+
    'PRIMARY KEY (dsid, pid))';
  adQuery1.ExecSQL;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  adConnection1.Connected := true;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
  showmessage(ADSQLiteSecurity1.CheckEncryption);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  ADSQLiteSecurity1.SetPassword();
end;
 
procedure TForm1.Button4Click(Sender: TObject);
begin
  adConnection1.Connected := false;
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  {$IFDEF iOS}
  adConnection1.Params.Values['Database'] := GetHomePath + PathDelim +
      'Documents' + PathDelim + 'db1.sqlite';
  {$else}
    adConnection1.Params.Values['Database'] := ExtractFileDir(ParamStr(0))+'db1.sqlite';
  {$ENDIF}
 
  ADSQLiteSecurity1.DriverLink := ADPhysSQLiteDriverLink1;
  ADSQLiteSecurity1.Database := adConnection1.Params.Values['Database'];
  ADSQLiteSecurity1.Password := 'TEST_12345';
end;
Antwort von Emba:
Zitat:
Hallo Herr x,

in der Tat, wie befürchtet:

SQLite Verschlüsselung nur auf iOS. //Kommentar: Das nur auf iOS bezieht sich wohl darauf, dass es nur unter iOS nicht geht

Also müssten Sie sich nach Alternativen umschauen…. UniDAC, LiteDAC

Best regards,
Mit freundlichen Grüßen

y


Embarcadero Germany GmbH | www.embarcadero.com/de

Philip

Geändert von Darlo (25. Jan 2014 um 13:32 Uhr)
  Mit Zitat antworten Zitat
schotti65

Registriert seit: 3. Sep 2010
Ort: Berlin
53 Beiträge
 
Delphi XE5 Enterprise
 
#5

AW: SQLite iOS encrypt password klappt nicht

  Alt 25. Jan 2014, 16:31
Aha.
Ich bin parallel auf anderem Weg zu derselben Erkenntnis gekommen.
FireDac ist ja wohl nichts anderes als das seit XE4 inkorporierte AnyDac von DA-Soft (http://www.da-soft.com/).
Die hab ich gefragt und die folgende Antwort bekommen:

"Hello ... SQLite encryption is supported only on Windows.
--
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"

Das ist doof.
Und noch doofer ist, das im Emba-Wiki (http://docwiki.embarcadero.com/RADSt...anken_(FireDAC)) nicht darauf hingewiesen wird.
Ein Absatz über der ganzen Verschlüsselungsgeschichte wird noch OS-X und iOS aufgelistet.

Das könnte ein Querlesender ruhig mal einpflegen...
  Mit Zitat antworten Zitat
Darlo

Registriert seit: 28. Jul 2008
Ort: München
1.196 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#6

AW: SQLite iOS encrypt password klappt nicht

  Alt 25. Jan 2014, 17:49
Und Interbase toGo kann das zwar, kostet aber pro Client Lizenzgebühren im unterem 2 stelligen Bereich, völlig inakzeptabel. So kann man preislich im AppStore nicht mithalten
Philip
  Mit Zitat antworten Zitat
schotti65

Registriert seit: 3. Sep 2010
Ort: Berlin
53 Beiträge
 
Delphi XE5 Enterprise
 
#7

AW: SQLite iOS encrypt password klappt nicht

  Alt 26. Jan 2014, 12:47
Nur so als Abschluss, falls jemand die gleiche Randbedingung "App braucht nur lesen" (<=> Datenaustausch in eine Richtung reicht aus) haben sollte, ich hab's jetzt mit SQLite folgendermassen gelöst:

- Backend erstellt + verschlüsselt periodisch eine Textdatei, die alle SQL-Anweisungen zum kompletten erstellen der DB enthält (create insert usw.)
- Textdatei wird on demand via FTP bei der App aktualisiert
- App liest bzw. entschlüsselt die Textdatei jedes Mal bei Start und erzeugt dann die komplette DB im Speicher (database=":memory:").
Damit ist auf dem iOS Gerät anstelle der nicht-verschlüsselbaren SDB nur eine verschlüsselte Textdatei.

Klappt, bis jetzt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr.
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