|
| 1 | +*** Download Source and Binaries |
| 2 | + |
| 3 | + The latest binary packages for developers, with the jar’s, .so’s and a quick sample can be [[https://www.zetetic.net/sqlcipher/open-source][here]], the source can be found [[https://github.com/sqlcipher/android-database-sqlcipher][here]]. |
| 4 | + |
| 5 | +*** Compatibility |
| 6 | + |
| 7 | + SQLCipher for Android runs on Android 2.1 - 6.0, both x86 and ARM architectures. |
| 8 | + |
| 9 | +*** Contributions |
| 10 | + |
| 11 | +We welcome contributions, to contribute to SQLCipher for Android, a [[https://www.zetetic.net/contributions/][contributor agreement]] needs to be submitted. All submissions should be based on the =master= branch. |
| 12 | + |
| 13 | +*** An Illustrative Terminal Listing |
| 14 | + |
| 15 | +A typical SQLite database in unencrypted, and visually parseable even as encoded text. The following example shows the difference between hexdumps of a standard SQLite db and one implementing SQLCipher. |
| 16 | + |
| 17 | +: ~ sjlombardo$ hexdump -C sqlite.db |
| 18 | +: 00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.| |
| 19 | +: … |
| 20 | +: 000003c0 65 74 32 74 32 03 43 52 45 41 54 45 20 54 41 42 |et2t2.CREATE TAB| |
| 21 | +: 000003d0 4c 45 20 74 32 28 61 2c 62 29 24 01 06 17 11 11 |LE t2(a,b)$…..| |
| 22 | +: … |
| 23 | +: 000007e0 20 74 68 65 20 73 68 6f 77 15 01 03 01 2f 01 6f | the show…./.o| |
| 24 | +: 000007f0 6e 65 20 66 6f 72 20 74 68 65 20 6d 6f 6e 65 79 |ne for the money| |
| 25 | +: |
| 26 | +: ~ $ sqlite3 sqlcipher.db |
| 27 | +: sqlite> PRAGMA KEY=’test123′; |
| 28 | +: sqlite> CREATE TABLE t1(a,b); |
| 29 | +: sqlite> INSERT INTO t1(a,b) VALUES (‘one for the money’, ‘two for the show’); |
| 30 | +: sqlite> .quit |
| 31 | +: |
| 32 | +: ~ $ hexdump -C sqlcipher.db |
| 33 | +: 00000000 84 d1 36 18 eb b5 82 90 c4 70 0d ee 43 cb 61 87 |.?6.?..?p.?C?a.| |
| 34 | +: 00000010 91 42 3c cd 55 24 ab c6 c4 1d c6 67 b4 e3 96 bb |.B?..?| |
| 35 | +: 00000bf0 8e 99 ee 28 23 43 ab a4 97 cd 63 42 8a 8e 7c c6 |..?(#C??.?cB..|?| |
| 36 | +: |
| 37 | +: ~ $ sqlite3 sqlcipher.db |
| 38 | +: sqlite> SELECT * FROM t1; |
| 39 | +: Error: file is encrypted or is not a database |
| 40 | + |
| 41 | +(example courtesy of SQLCipher) |
| 42 | + |
| 43 | +*** Details for Developers |
| 44 | + |
| 45 | +We’ve packaged up a very simple SDK for any Android developer to add SQLCipher into their app with the following three steps: |
| 46 | + |
| 47 | +1. Add a single sqlcipher.jar and a few .so’s to the application libs directory |
| 48 | +2. Update the import path from =android.database.sqlite.*= to =net.sqlcipher.database.*= in any source files that reference it. The original =android.database.Cursor= can still be used unchanged. |
| 49 | +3. Init the database in =onCreate()= and pass a variable argument to the open database method with a password: |
| 50 | + |
| 51 | +: SQLiteDatabase.loadLibs(this); //first init the db libraries with the context |
| 52 | +: SQLiteOpenHelper.getWritableDatabase("thisismysecret"): |
| 53 | + |
| 54 | +An article covering both integration of SQLCipher into an Android application as well as building the source can be found [[http://sqlcipher.net/sqlcipher-for-android][here]]. |
| 55 | + |
| 56 | +Notepad + SQLCipher = Notepadbot |
| 57 | + |
| 58 | +Notepadbot is a sample application pulled from the standard Android samples code and updated to use SQLCipher. You can browse the source [[https://github.com/guardianproject/notepadbot][here]] and download the apk [[https://github.com/guardianproject/notepadbot/downloads][here]]. |
| 59 | + |
| 60 | +*** Building |
| 61 | + |
| 62 | +In order to build android-database-sqlcipher from source you will need both the Android SDK as well as Android NDK. We currently recommend using Android NDK version r11c. To complete the =make init= command, you will need the =android-19= platform installed from the SDK. Once you have cloned the repo, change directory into the root of the repository and run the following commands: |
| 63 | + |
| 64 | +: # this only needs to be done once |
| 65 | +: make init |
| 66 | + |
| 67 | +: # to build the source |
| 68 | +: make |
| 69 | + |
| 70 | +Recursively copy the =libs= directory into the root of your application, you will also need the =assets= directory copied into the root of your application folder. A detailed set of instructions and further customization can be found [[http://sqlcipher.net/sqlcipher-for-android/][here]]. |
| 71 | + |
| 72 | +*** License |
| 73 | + |
| 74 | +The Android support libraries are licensed under Apache 2.0, in line with the Android OS code on which they are based. The SQLCipher code itself is licensed under a BSD-style license from Zetetic LLC. Finally, the original SQLite code itself is in the public domain. |
0 commit comments