delete from hateblo.jp where 1=1;

タイトルに意味はありません。

System.Data.SQLite の暗号化について

対象

  • .NET Framework
  • SQLiteを組み込もうとしている
  • パスワードを設定しようとしている

調査内容

SQLiteでパスワードを設定した場合、暗号化される。
その暗号化っていったい何者で、どうやって暗号化しているのか。

結果

WinCryptを使用して、RSA-SHA1-RC4で暗号化している。
暗号化しているのはB-Treeページ単位で、それぞののページの読み書きを行うときに呼び出されているように見える。
SQLite.Interop/src/win/crypt.c:InitializeProvider()

参考文献