C#でSQLiteパスワード(暗号化)と復号化

■はじめに

パソコン用のDBと言えばSQLite!!
SQLiteはパスワード(暗号化)出来ないと思って調べると・・・
出来ることが分かった。

Web開発ではDB設計や操作は『A5:SQL Mk-2』を使っているので今回も使いたい!!
もちろん、SQLiteは使える事に感謝しながらも(ER図からSQLite用DDL生成が未対応なのが残念)
パスワード付のSqliteを扱うとADO接続になるのでPC毎にODBC設定が必要なので不便

じゃぁ~、パスワード無しで開発して、本番リリース時にパスワード付にすれば良いと思い調べたら
新規作成時にパスワード有(暗号化)で作成する方法は、沢山見つけることが出来た。
確かにDDLを実行するプログラムを準備すればこの方法で良いのだと思う

しかぁ~し、動作検証でデータ確認するのに
ODBC設定ってPC毎の権限都合もあり大変だったりするので
SQLiteパスワード有(暗号化)←→復号化を簡単に行ったり出来ないかと思って調べて
方法がわかったので自分用のメモとして纏めてみた。

■環境情報

OS:Windows11
DB:SQLite3
開発環境:Microsoft Visual Studio Professional 2022 (64 ビット)
.net core
windows form

■NuGetで必要なものをインストール

1.Microsoft.Data.Sqlite.Core
2.Microsoft.EntityFrameworkCore
3.Microsoft.EntityFrameworkCore.Design
4.Microsoft.EntityFrameworkCore.Sqlite.Core
5.SQLitePCLRaw.bundle_e_sqlcipher

1.SQLiteのパスワード付DB作成

動作確認用に、下記のようなFormアプリを作ってみた。

テスト用にSQLite用のクラスを用意
パスワード付DBを作成するのは簡単
1.SQLiteのDBファイルを指定(今回は明示的にフルパス)
2.SqliteOpenMode.ReadWriteCreateモード
3.パスワード指定
4.コネクションを取得して開く
5.コネクションを閉じて解放

Formのボタンイベントに追加

2.テーブル作成

Sqliteクラスに下記を追加

Formのボタンイベントに追加

3.データ登録

Sqliteクラスに下記を追加

Formのボタンイベントに追加

4.データ検索

Sqliteクラスに下記を追加

Formのボタンイベントに追加

5.DB復号化

Sqliteクラスに下記を追加

Formのボタンイベントに追加

6.DB再暗号化

Sqliteクラスに下記を追加

Formのボタンイベントに追加

7.まとめ

今、手元にある最新環境で
DBの新規作成から、復号化、再暗号化をやってみました。

自分用メモなので、細かい解説は省いてるし
あくまでも動作確認なので、エラーなど考慮して無いことが多いのでお許しを