0

ZeosDB コンポーネントを使用して sqlite データベースにアクセスしています。暗号化されていないデータベースで正常に動作します。

暗号化されたデータベースで、ファイルが暗号化されているか、データベースではありません。パスワードを設定すればイーブン。

使用している DLL ファイルは間違っていますか? 公式ページの最後のdllを使用しています。デフォルトでは暗号化をサポートしていませんか?

4

2 に答える 2

4

SQLite3にはいくつかの暗号化スキームがあります。

それらの中で、あなたは持っています:

  • SQLite Encryption Extension(SEE)という名前のSQLite3作成者による公式の無料ではない暗号化ライブラリ:dllを支払い、使用し、初期化を変更してデータベースキーを設定します。
  • オープンソースSQLCipher ;
  • WXSQlite3ラッパー;
  • Delphiの場合、 mORMotに含まれているオープンソースの静的リンクバージョン(カスタム暗号化を使用)-静的リンクを使用すると、外部を使用しないためsqlite3.dll、展開とサポートが容易になります-MS SQL、Oracleへの簡単な切り替えが特徴ですまたは、Delphi5からXE3までの同じソースコードを使用するOleDB/ ODBCで、高速です。
  • 上記のリンクを参照してください。

ZeosDBSQLite3レベルはそれらのどれも処理しません。

SQlite3 APIドライバー(ユニットZPlainSqLiteDriver)には暗号化が含まれていません。したがって、変更する必要があります。または、暗号化APIをサポートする別のラッパーに切り替えます。

于 2012-11-26T08:33:17.250 に答える
3

最近、同じ問題が発生しました(UniDacを使用)。公式の DLL は暗号化をサポートしていません。暗号化を含むライブラリがいくつかありますが、それらは交換可能ではありません。つまり、ある SQLite DLL で暗号化された DB は、他のディストリビューションでは復号化できません。あなたのケースも同じだと思います。

私の解決策は次のとおりです。

  • .NET用の...静的バンドル...パッケージ(x86、x64)をダウンロードしました-これは暗号化をサポートしています(Windows DPAPIだと思います)
  • System.Data.SQLite.dll を SQLite3.dll に名前変更 -> この DLL はネイティブ DLL であり、enc/dec をサポート
  • 私のDBMSのフォルダで、SQLite DLLを上記で抽出したものに置き換えました

このように、DBMS は新しい DLL を使用して暗号化し、プログラムは同じバージョンの DLL を使用して暗号化を解除できます。

以下もご覧ください。

ノート:

  • また、SQLite3.dll をプログラム ディレクトリにコピーしてください。他の多くの製品は SQLite を使用し、%PATH% に含まれているため、「正しい」SQLite3.dll が実行可能ファイルによって読み込まれるという保証はありません。ここで興味深い解決策を見つけることができます
  • このため、ライセンスを参照して、.NET のバージョンを無料で使用できるかどうかを確認してください。
于 2012-11-26T08:32:52.220 に答える