# android-database-sqlcipher **Repository Path**: zxb3121999/android-database-sqlcipher ## Basic Information - **Project Name**: android-database-sqlcipher - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2016-09-01 - **Last Updated**: 2024-05-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README *** Download Source and Binaries 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]]. *** Compatibility SQLCipher for Android runs on Android 2.1 - 5.0.1, both x86 and ARM architectures. *** Contributions 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. *** An Illustrative Terminal Listing 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. : ~ sjlombardo$ hexdump -C sqlite.db : 00000000 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00 |SQLite format 3.| : … : 000003c0 65 74 32 74 32 03 43 52 45 41 54 45 20 54 41 42 |et2t2.CREATE TAB| : 000003d0 4c 45 20 74 32 28 61 2c 62 29 24 01 06 17 11 11 |LE t2(a,b)$…..| : … : 000007e0 20 74 68 65 20 73 68 6f 77 15 01 03 01 2f 01 6f | the show…./.o| : 000007f0 6e 65 20 66 6f 72 20 74 68 65 20 6d 6f 6e 65 79 |ne for the money| : : ~ $ sqlite3 sqlcipher.db : sqlite> PRAGMA KEY=’test123′; : sqlite> CREATE TABLE t1(a,b); : sqlite> INSERT INTO t1(a,b) VALUES (‘one for the money’, ‘two for the show’); : sqlite> .quit : : ~ $ hexdump -C sqlcipher.db : 00000000 84 d1 36 18 eb b5 82 90 c4 70 0d ee 43 cb 61 87 |.?6.?..?p.?C?a.| : 00000010 91 42 3c cd 55 24 ab c6 c4 1d c6 67 b4 e3 96 bb |.B?..?| : 00000bf0 8e 99 ee 28 23 43 ab a4 97 cd 63 42 8a 8e 7c c6 |..?(#C??.?cB..|?| : : ~ $ sqlite3 sqlcipher.db : sqlite> SELECT * FROM t1; : Error: file is encrypted or is not a database (example courtesy of SQLCipher) *** Details for Developers We’ve packaged up a very simple SDK for any Android developer to add SQLCipher into their app with the following three steps: 1. Add a single sqlcipher.jar and a few .so’s to the application libs directory 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. 3. Init the database in =onCreate()= and pass a variable argument to the open database method with a password: : SQLiteDatabase.loadLibs(this); //first init the db libraries with the context : SQLiteOpenHelper.getWritableDatabase("thisismysecret"): 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]]. Notepad + SQLCipher = Notepadbot 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]]. *** Building In order to build android-database-sqlcipher from source you will need both the Android SDK as well as Android NDK. 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: : # this only needs to be done once : make init : # to build the source : make 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]]. *** License 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.