Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi UniDac 4.3.8 Encryption nicht kompatibel zu UniDac 4.5.9 (https://www.delphipraxis.net/171172-unidac-4-3-8-encryption-nicht-kompatibel-zu-unidac-4-5-9-a.html)

Darlo 24. Okt 2012 11:53

Datenbank: Sqlite • Version: 3.7.13 • Zugriff über: UniDac

UniDac 4.3.8 Encryption nicht kompatibel zu UniDac 4.5.9
 
Hallo zusammen,

ich benutze mit Delphi XE2 die UniDac in der Version 4.3.8.
Mein Programm benutzt eine sqlite Datenbank und benutzt die Encryption die die UniDacs bereitstellen (AES 256).

Nachdem ich ich mein Delphi XE3 eingerichtet habe, hier gibt es nur die UniDac 4.5.9, musste ich feststellen, dass
die Encryption nicht kompatibel ist. Laut Support von DevArt:

The problem you have encountered is due to a bug with the SQLite database encryption/decryption, that existed in UniDAC 4.3 and has been fixed in UniDAC 4.5.9.

Das ist natürlich alles ziemlich unglücklich. Da die Software bereits bei Kunden im Einsatz ist dachte ich mir folgendes:
Ich entwickel ein kleines Tool unter XE2 das die Datenbank entschlüsselt exportiert und anschließend ein Tool aufruft, das unter XE3 entwickelt ist und nun die Datenbank
wieder verschlüsselt. Damit das nächste Update der Software (XE3) auch auf die Daten zugreifen kann.

Ich finde nur keine Möglichkeit wie ich mit den UniDacs eine Datenbank entschlüsselt exportieren kann.
Hat einer eine Idee?

Darlo 24. Okt 2012 12:05

AW: UniDac 4.3.8 Encryption nicht kompatibel zu UniDac 4.5.9
 
Hier die Antwort von DevArt:

You can also use another workaround that does not require using UniDAC 4.3.
A database that was encrypted using UniDAC 4.3, can be decrypted with UniDAC 4.5.9 using only the first character of the encryption key.
In your example, you can use the '.' key to decrypt the database encrypted with UniDAC 4.3.
So, in order to re-encrypt your database with a correct key, you should perform the following steps using UniDAC 4.5.9:
- first, connect to the database using a '.' key;
- then call the TLiteUtils.EncryptDatabase(UniConnection1, '.xxxxxxxxxxxxxx$') class method to change the encryption key;
- now you can disconnect from the database and connect to it again using the correct key.


Das klappt auch super. Nur kann ich immer noch nicht die verschlüsselte Sqlite Datenbank mit einem
DB-Tool z.b. sqliteExpert öffnen, hier heißt es immer noch:

File is encrypted or not a SQLite3 database or encryption key does not match.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:47 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