Kou*_*lya 6 database encryption android sqlcipher-android
我已经用 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);
}
Run Code Online (Sandbox Code Playgroud)
在主活动中,
SQLiteDatabase.loadLibs(this);
Run Code Online (Sandbox Code Playgroud)
下面是我的依赖项
implementation 'net.zetetic:android-database-sqlcipher:4.4.3'
implementation 'androidx.sqlite:sqlite:2.1.0'
Run Code Online (Sandbox Code Playgroud)
我正在使用 SQLCipher 来防止我的应用程序被攻击者访问存储在 /data/data/com.applicationname/ 目录中的数据
Root 设备可以访问 data/data/com.applicationname/ 目录的权限。那么使用 SQLCipher 不会允许用户访问该目录?
我也看过下面的加密教程。所以现在我很困惑。使用 SQLCipher 本身很好或需要像下面的教程那样做
提前致谢。
我假设您将数据库捆绑在资产或类似的东西中,在这种情况下,无论您尝试多少,总会有攻击者可以攻击您(但在大多数情况下他们不会,因为有但密码可能会减慢攻击者的速度(但如果要捆绑,您还必须将密码放入代码中,这意味着根本没有安全性)