今回はXamarin.FormsでSqliteのデータを暗号化する方法についてです。
Xamarin.FormsでSqliteを使用する方法はいくつかありますが、今回はこの
https://www.nuget.org/packages/sqlite-net-pcl/
「sqlite-net-pcl」を使用した暗号化の方法を説明します。
なお今回「sqlite-net-pcl」の導入方法やデータの取得や保存などの方法については割愛します。使い方については「sqlite-net-pcl」のgitに説明が書いてあるのでそちらを参照してみてください。
https://github.com/praeclarum/sqlite-net
では本題の暗号化する方法についてです。
暗号化は「sqlite-net-pcl」の暗号化対応ライブラリの入れるのとSqliteのコネクションを取得する処理で設定をすることで暗号化することができます。
まず、「sqlite-net-pcl」の暗号化対応ライブラリ、「sqlite-net-sqlcipher」のNugetをプロジェクトに追加します。「sqlite-net-pcl」のNugetは入れる必要はなく「sqlite-net-sqlcipher」だけ入れればOKです。
https://www.nuget.org/packages/sqlite-net-sqlcipher
次にコネクション取得の処理部分ですが、通常は下記のような形でコネクションを取得します。
var databasePath = "sqliteのファイルのパス";
var db = new SQLiteConnection(databasePath);暗号化したい場合は下記のようにオプションを指定し、コネクションの取得をします。
var options = new SQLiteConnectionString(DatabasePath, true, key: "password");
var db = new SQLiteConnection(options);SQLiteAsyncConnectionでも同様にして暗号化処理ができます。
var options = new SQLiteConnectionString(DatabasePath, true, key: "password");
var db = new SQLiteAsyncConnection(options);これでSqliteのファイルが暗号化されます。

