2011-01-05 17 views
5

Wie kann ich eine verschlüsselte SQLite-Datenbank erstellen, die tatsächlich verschlüsselt bleibt oder die ich später öffnen kann?SQLite - Erstellen verschlüsselter Datenbanken. Wie zum...?

Ich benutzte SQLite2009 Pro Enterprise Manager, der "verschlüsselte" Datenbanken erstellen kann, aber nach Eingabe des Verschlüsselungsschlüssels sind sie nicht mehr zu öffnen.

Ich benutzte SQLiteManager von SQLabs, um eine verschlüsselte Datenbank zu erstellen, und während diese später geöffnet werden kann, kann dies von jedem SQLite-Management-Tool oder Code erfolgen, ohne dass der eingegebene Schlüssel benötigt wird.

Also, wie zum Teufel können Sie bitte eine verschlüsselte SQLite-Datenbank erstellen?

Ich plane, die Datenbank in einer Adobe Flex-Anwendung zu verwenden.

Vielen Dank.

+1

Ist SQLite2009 das Produkt der Firma, die SQLite geschrieben hat? Weil ich wusste, dass sie eins hatten. Und wenn das nicht funktionierte, würde ich mich bezüglich des Problems an sie wenden, anstatt noch einmal von vorne zu beginnen. –

+0

Ich bin mir nicht sicher, es scheint von jemandem namens Osen Kusnadi (nicht nach seinem Namen suchen) geschrieben zu sein. Aber ich würde nicht überrascht sein, dass es immer zu den ersten Empfehlungen auf der Website sqlite.org gehört. Ich habe diese spezielle Anwendung seit 2010 bis heute ausprobiert und das Verschlüsselungs-Ding hat nie funktioniert. – Francisc

Antwort

4

SQLite unterstützt die Integration der Verschlüsselung, die standardmäßige Open-Source-SQLite-Distribution unterstützt jedoch keine Verschlüsselung. Verschlüsselte Versionen von SQLite sind nur über verschiedene Clients oder Tools übertragbar, wenn sie alle die gleiche Verschlüsselungserweiterung verwenden.

Die SQLite-Entwickler selbst verteilen eine kommerzielle Version von SQLite, die die Verschlüsselung transparent unterstützt. Wenn dieses Modul für die Verschlüsselung verwendet wird, funktioniert die Verschlüsselung plattformübergreifend und jedes in die Datei geschriebene Byte ist verschlüsselt. Es gibt nichts in einer verschlüsselten SQLite-Datei, die auf der Festplatte gespeichert ist, um anzuzeigen, dass es sich um eine SQLite-Datenbank handelt. Viele Tools unterstützen diese Implementierung, indem Sie die kommerzielle sqlite.dll-Datei anstelle der Open-Source-Datei einfügen.

Es gibt auch Drittanbieter-Erweiterungen, die die Verschlüsselung unterstützen. Zum Beispiel unterstützt System.Data.SQLite die Verschlüsselung, verwendet dafür aber .NET-Bibliotheken und somit kann eine verschlüsselte System.Data.SQLite nur von einem anderen Client gelesen werden, der auch System.Data.SQLite verwendet (dies ist absichtlich, aus Respekt gegenüber den wichtigsten SQLite-Entwicklern und deren kommerzielles Produkt).

Adobe AIR 1.5 unterstützt die Verschlüsselung. Ich weiß nicht genau, welcher Mechanismus verwendet wird, aber ich habe gesucht und konnte die Antwort nicht finden. Es ist möglich, dass eine AIR-verschlüsselte Datenbank nur mit AIR gelesen werden kann. Ich weiß es nicht so oder so. hier ist jedoch ein guter Ausgangspunkt für das Lernen über das Arbeiten mit verschlüsselten Datenbanken ist AIR:

http://probertson.com/articles/2008/11/18/air-1_5-encrypted-sqlite-database-how-to/

+0

Vielen Dank, Samuel. Ich hatte keine Ahnung, wie das funktioniert, wenn es darum geht, SQLite-Datenbanken zu verschlüsseln. Ich weiß, AIR unterstützt das, dachte aber, es sei etwas "Universelles". Aus Neugier, kann eine Datenbank, die nicht verschlüsselt erstellt wurde, so nachträglich erstellt werden, wenn sie bereits alle möglichen Daten enthält? – Francisc

+1

@Francisc, nein, eine Datenbank kann nicht von verschlüsselt in unverschlüsselt konvertiert werden. Sie können jedoch eine Verbindung zu einer Datenbank herstellen, sie ablegen und dann eine Verbindung zu einer leeren Datenbank herstellen und den vorherigen Speicherabzug importieren. Durch diesen Mechanismus können Sie effektiv von verschlüsselt zu unverschlüsselt konvertieren, aber es ist indirekt. –

+0

Sie sagten "von verschlüsselt zu unverschlüsselt", meintest du das anders herum? Vielen Dank. – Francisc

3

Re: eine bestehende Datenbank

„Aus Neugier zu verschlüsseln, kann eine Datenbank, die erstellt wurde nicht verschlüsselt so gemacht werden, wenn es schon alle möglichen Daten enthält? "

Sie können eine unverschlüsselte Datenbank nicht direkt verschlüsseln. Sie können eine Datenbank der Verschlüsselungsschlüssel ändern mithilfe der SQLConnection.reencrypt() Methode verwendet, aber es funktioniert nur auf bereits verschlüsselten Datenbanken:

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/data/SQLConnection.html#reencrypt()

jedoch als Behelfslösung Sie mehrere Datenbanken in einer einzigen öffnen SQLConnection und Sie können Daten und Struktur von einem zum anderen kopieren.Ich habe tatsächlich eine Utility-Klasse geschrieben, die verwendet diese Technik, damit Sie eine unverschlüsselte db verschlüsseln:

https://github.com/probertson/air-sqlite/blob/DB-copy-dev/src/com/probertson/data/DBCopier.as

+0

Ausgezeichnete Antwort, ich wünschte, ich könnte 2 richtige Antworten markieren. Vielen Dank. – Francisc

+0

Wenn Sie den Quellcode der Verschlüsselungserweiterung haben, können Sie. SQLCipher bietet solchen Quellcode. Dasselbe kann für System.Data.sqlite getan werden. Es ist wirklich einfach. –

Verwandte Themen