This is database encryption example in github
(sqlcipher-android-tests/ImportUnencryptedDatabaseTest.java at master · sqlcipher/sqlcipher-android-tests · GitHub)
database = SQLiteDatabase.openOrCreateDatabase(unencryptedDatabase, “”, null);
database.rawExecSQL(String.format(“ATTACH DATABASE ‘%s’ AS encrypted KEY ‘%s’”,
encryptedDatabase.getAbsolutePath(), ZeteticApplication.DATABASE_PASSWORD));
database.rawExecSQL(“select sqlcipher_export(‘encrypted’)”);
database.rawExecSQL(“DETACH DATABASE encrypted”);
database.close();
after that, I cannot open with same password.
Because there’s difference between byte array password and converted string.
rawExecSQL using only string format.
If I open database like below, it opened. (byte password)
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(sourceDbFile.getAbsolutePath(), “”, null);
destDbFile.getAbsolutePath().length()-3);
db.rawExecSQL(String.format(“ATTACH DATABASE ‘%s’ AS encrypted KEY ‘%s’;”, destDbFile.getAbsolutePath(), password));
db.rawExecSQL(“SELECT sqlcipher_export(‘encrypted’)”);
db.rawExecSQL(“DETACH DATABASE encrypted;”);
db.close();
db.SQLiteDatabase.openOrCreateDatabase(destDbFile, String.valueOf(password), null)
Is there another way to passing byte array parameter?