Skip to content

Commit 14efced

Browse files
Add README
1 parent db9270a commit 14efced

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

README.org

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
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

Comments
 (0)