使用SQLCipher后,我的SQLite数据库是否受到保护?
我已经用 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);
}
在主活动中,
SQLiteDatabase.loadLibs(this);
下面是我的依赖项
implementation 'net.zetetic:android-database-sqlcipher:4.4.3'
implementation 'androidx.sqlite:sqlite:2.1.0'
我正在使用 SQLCipher 来防止我的应用程序被攻击者访问存储在 /data/data/com.applicationname/ 目录中的数据
Root 设备可以访问 data/data/com.applicationname/ 目录的权限。那么使用 SQLCipher 不会允许用户访问该目录?
- 现在我想确定我的数据库现在是否受到保护。怎么知道呢?
- 我在 getWritableDatabase 中使用硬编码密码。这样做的好方法吗?或者它可能被黑客入侵?
我也看过下面的加密教程。所以现在我很困惑。使用 SQLCipher 本身很好或需要像下面的教程那样做
https://www.raywenderlich.com/778533-encryption-tutorial-for-android-getting-started%20tutorial#toc-anchor-001
提前致谢。