我已将 SQLiteOpenHelper 替换为import net.sqlcipher.database.SQLiteOpenHelper
为了将数据插入数据库并从中获取数据,我使用了
SQLiteDatabase db = this.getWritableDatabase("mypassword");
而不是下面
SQLiteDatabase db = this.getWritableDatabase();
下面是我的 oncreate 和 onUpgrade,
@Override
public void onCreate(net.sqlcipher.database.SQLiteDatabase db) {
db.execSQL(ARecords.CREATE_TABLE);
db.execSQL(BRecords.CREATE_TABLE);
}
@Override
public void onUpgrade(net.sqlcipher.database.SQLiteDatabase db, int oldVersion, int newVersion) {
// Drop older table if existed
db.execSQL("DROP TABLE IF EXISTS " + ARecords.TABLE_NAME);
db.execSQL("DROP TABLE IF EXISTS " + BRecords.TABLE_NAME);
//Create tables again
onCreate(db);
}
在 MainActivity 中,
SQLiteDatabase.loadLibs(this);
以下是我的依赖项
implementation 'net.zetetic:android-database-sqlcipher:4.4.3'
implementation 'androidx.sqlite:sqlite:2.1.0'
我正在使用 SQLCipher 来防止我的应用程序被攻击者访问存储在 /data/data/com.applicationname/ 目录中的数据
有根设备可以访问 data/data/com.applicationname/ 目录。然后使用 SQLCipher 不会允许用户访问该目录?
- 现在我想确定我的数据库现在是否安全。怎么知道?
- 我在 getWritableDatabase 中使用硬编码密码。这是好方法吗?或者它可能被黑客入侵?
我还看到了下面的加密教程。所以现在我很困惑。使用 SQLCipher 本身很好或需要像下面的教程那样做
提前致谢。