sqlcipher_logo

【c++】SQLCipherを導入してみた

LINEで送る
Pocket

SQLiteはただのファイルですので高度な知識を持った
ユーザには中身を見られたり改竄される恐れがあります。

このSQLiteを暗号化する一つの手法として2008年8月にリリースされたSQLCipherです。

Full Database Encryption for SQLite
オープンソースであり、SAMSUNGやxeroxを始め様々な企業に導入されているそうです。

今日はこれの導入方法について書きます。

無償で使うには


SQLCipherは有償です。
ですが、それは予めビルドされたライブラリを導入する場合です。
1developer辺り499$です。(2015/03/10時点)

ですが、ライセンスを明記した上で自分でソースコードからビルドすれば無償で使うことも可能です。
では、ソースコードからビルドして使ってみましょう!

開発環境


ダウンロード


openssl


現状最新は1.0.2ですのでこれをダウンロードします。


SQLCipher


openssl-xcode


パスの追加


Xcodeで[Xcode] – [Preferences] – [Locations] – [Source Trees]に以下を追加します。

[Name] – OPENSSL_SRC
[Display Name] – OPENSSL_SRC
[Path] – (例) $(PROJECT_DIR)/../libs/openssl-1.0.2

Locations_example


プロジェクトの追加


gitでcloneしてきたフォルダ内のxcodeprojをプロジェクトに追加します。
この際、
ドラッグアンドドロップではなく[プロジェクトを右クリック] – [Add Files to “ProjectName”]で追加する様にしてください。

そして、targetにチェックが付いている事を確認してAddをクリックします。

Build Phasesの設定


Target Dependencies


[Project] – [Build Phases] – [Target Dependencies]で
cryptoとsqlicipherを追加します。

Add_items


Link Binaries With Libraries


[Project] – [Build Phases] – [Link Binaries With Libraries]でlibcrypto.aとlibsqlicipher.aを追加します。

Add_frameworks_and_libraries


C フラグの設定


[Project] – [Build Settings] – [Other C Flags]の全Build Configuration分-DSQLITE_HAS_CODECを追加します。

other_c_flags


ビルド!


ここまできたらビルドしてみてください。
上手く設定出来ていればコンパイルは通るはずです。

コードで導入


とても簡単です。


データベースをopenした後にsqlite3_keyを実行するだけです。
この例で言えばv179g41b3u14b8710fb23fb38がパスワードになります。

注意


一つだけ注意があります。
当たり前と言えば当たり前なのですが、
上で示した sqlite3_keyはdatabase作成時に実行されなければなりません。
言い換えれば作成されているdatabaseに途中からSQLCipherを充てることは出来ません。
なので、もうSQLiteを利用するアプリをリリースしている際は一手間必要かもしれませんね。

誰かのお役に立てば。

このブログのcocos記事一覧

LINEで送る
Pocket

Dalt

translimit, Inc. Application Engineer. Twitter: @daiki1003 Facebok: Daiki Asahi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です