24 Stimmen

SQLite-Datenbank in C# verschlüsseln

Was ist der beste Ansatz zum Verschlüsseln einer SQLite-Datenbankdatei in .Net/C#? Ich verwende sqlite-dotnet2 Umschlag.

Es gibt Tools wie SQLite-Verschlüsselungserweiterung y SQLite-Krypto , aber beide sind unfrei, während mein Projekt unter der GPL steht.

Der naive Ansatz, an den ich dachte, war, SQLite eine temporäre Datei verwalten zu lassen, diese dann beim Beenden des Programms zu verschlüsseln und das Original zu überschreiben (zu löschen). Der offensichtliche Nachteil ist, dass bei einem Programmabsturz (und während es läuft) die Klartext-DB zugänglich ist.

Gibt es einen besseren Weg, dies zu tun? Kann ich einen verschlüsselten Stream an den Wrapper übergeben (anstatt SQLiteConnection.CreateFile zu verwenden)?

[Bearbeiten] Vielleicht denke ich zu viel darüber nach. Ist es ausreichend, die Option Password in der Verbindungszeichenfolge zu verwenden? Würde die Datei in diesem Fall richtig verschlüsselt werden (oder ist es ein schwächerer Schutz)?

1 Stimmen

> Es gibt Tools wie SQLite Encryption Extension und SQLite Crypt, aber beide sind unfrei, während mein Projekt unter der GPL steht. Wir haben die Verwendung mit .NET noch nicht ausprobiert, aber ich bin im Entwicklungsteam für [SQLCipher][1], das im Grunde eine freie und unbelastete Version von SQLite ist, die transparente Datenbankverschlüsselung bietet. Ich würde es für den Einsatz in mobilen und/oder eigenständigen Anwendungen empfehlen, bei denen eine eingebettete Datenbank erwünscht ist. [1]: github.com/sjlombardo/sqlcipher

1 Stimmen

...und die .NET-Version von SQLCipher ist jetzt auch ein kommerzielles Produkt :(

23voto

Ed Power Punkte 7915

Ich empfehle die Verwendung des System.Data.Sqlite Wrapper, der die Verschlüsselung beinhaltet. Es funktioniert hervorragend, ist einfach zu bedienen und ist eine vollständige ADO.Net-Implementierung. Sie erhalten den Wrapper von https://system.data.sqlite.org und der Entwickler beschreibt die Verwendung der Verschlüsselung in diesem Forum unter: https://web.archive.org/web/20100207030625/http://sqlite.phxsoftware.com/forums/t/130.aspx . Tipp - Sie setzen einfach die Kennworteigenschaft. Er beschreibt auch, wie er die Verschlüsselung mit der Microsoft Crypto API an anderer Stelle im Forum durchführt.

1 Stimmen

Die Links sind defekt. Könnten Sie den neuen Link zur Verfügung stellen?

1 Stimmen

Es sieht so aus, als hätte Robert Simpson die phxsoftware-Website aufgegeben, nachdem die Kontrolle über die Software an system.data.sqlite.org im Jahr 2011. Ich glaube nicht, dass die alten Forumsseiten irgendwo anders veröffentlicht werden.

2 Stimmen

Cache-Version des obigen Links web.archive.org/web/20130325100811/http://…

7voto

Schauen Sie sich das an:

http://zetetic.net/software/sqlcipher

Sie ist quelloffen.

Sie können sich auch den Code für wxsqlite3 ansehen.

5voto

Yakeen Punkte 2082

Ich würde versuchen http://code.google.com/p/csharp-sqlite/ Es ist eine Neuschreibung von SQLite 3.6.16 in C#, unter MIT-Lizenz. Ich nehme an, es wird einfach sein, es zu zwicken.

EDITAR: Wie in der Anmerkung unten erwähnt, unterstützt es auch sqlcipher Verschlüsselung

UPDATE: Seit Google Code nur noch gelesen wird, ist das Projekt auf seine eigene Website umgezogen https://system.data.sqlite.org/index.html/doc/trunk/www/index.wiki

1 Stimmen

C#-SQLite enthält integrierte Unterstützung für das sqlcipher-Paket; Sie kompilieren es mit SQLITE_HAS_CODEC und aktivieren es mit PRAGMA hexkey="0x0102030405060708090a0b0c0d0e0f10";

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X