如何使用SEE(SQLite加密扩展)对数据库进行加密?

时间:2018-08-27 12:12:22

标签: android sqlite android-sqlite

我需要在android中加密数据库。我决定使用SEE(SQLite加密扩展)。我看过文档并以相同的方式进行操作,但是未发生加密。我能够查看数据库的详细信息。我的示例程序在这里。

  public class MyHelper extends SQLiteOpenHelper {

   public static String ACSL_ITS_DETAILS = "acsl_its_details";
    public static String USER_ID = "userID";
    public static String PRIMARY_KEY = "_id";
    public static String UNIT_ID = "unit_id";
    public static String DATE = "date";
    public static String DEPTID = "deptid";
    public static String COMPY_CODE = "compy_code";
    public static String DEVICE_COMPY_CODE = "device_compy_code";

   public static String ACSLOGITS_TABLE = "CREATE TABLE IF NOT EXISTS " + ACSL_ITS_DETAILS + "(" + PRIMARY_KEY + " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL , " + USER_ID + " varchar," +
            "" + UNIT_ID + " varchar," +
            "" + DATE + " varchar," +
            "" + DEPTID + " varchar," +
            "" + COMPY_CODE + " varchar," +
            "" + DEVICE_COMPY_CODE + " varchar);";

    static MyHelper mInstance;
    public static SQLiteDatabase db;


    public MyHelper(Context context) {
        super(context, Environment.getExternalStorageDirectory()
                + File.separator + "see.db", null, 1);
    }

    public static MyHelper getInstance(Context context) {
        int i = 0;
        while (i < 2) {
            if (mInstance == null) {
                try {
                    mInstance = new MyHelper(context.getApplicationContext());
//                    db = mInstance.getWritableDatabase();
                    break;
                } catch (Exception e) {
                    e.printStackTrace();
                    try {
                        if (mInstance != null) {
                            mInstance.close();
                            mInstance = null;
                            i++;
                        }
                    } catch (Exception e1) {
                        e1.printStackTrace();
                    }

                }
            }
        }

        return mInstance;
    }

@Override
    public void onConfigure(SQLiteDatabase db) {
        super.onConfigure(db);
        db.execSQL("PRAGMA key = 'manvish'");
        Log.d("Gajanand", "onConfigure: ");

    }

    @Override
    public void onCreate(SQLiteDatabase sqLiteDatabase) {
        sqLiteDatabase.execSQL(ACSLOGITS_TABLE);

    }

    @Override
    public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

    }
}

我正在如下所示的主要活动中访问数据库

 public class MainActivity extends AppCompatActivity {

    SQLiteDatabase db;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        db = MyHelper.getInstance(this).getWritableDatabase();

        insertSthToDb();

        fetch();

    }

    private void insertSthToDb() {

        ContentValues values = new ContentValues();

        values.put(USER_ID, "1234");
        values.put(UNIT_ID, 516001280);

        db.insert(ACSL_ITS_DETAILS, null, values);

    }

    private void fetch() {

        Cursor cursor = db.rawQuery("select userID from acsl_its_details where _id = 1 ", null);

        if (null != cursor && cursor.moveToFirst()) {

            String id = cursor.getString(cursor.getColumnIndex(USER_ID));

            Log.d("Gajanand", "fetch: " + id);

        }

    }
}

清单文件如下所示

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.manvish.see">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>

                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
    </application>

</manifest>

link开始,我提到了这个话题。有帮助吗?

0 个答案:

没有答案