gpt4 book ai didi

android - 我是否使用 SQLCipher 正确加密?

转载 作者:行者123 更新时间:2023-11-29 21:17:10 27 4
gpt4 key购买 nike

我尝试使用 SQLCipher 来加密/解密我的数据库。它似乎有效,但我想确定我做的是否正确。这是我的代码:



 public class MainActivity extends Activity {

私有(private)数据库类别 dbc;
@覆盖
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//this.deleteDatabase("类别");
dbc = new DataBaseCate gory(this);
尝试 {
dbc.openToWriting();
dbc.createCategory("测试4");
数据库关闭();
}
捕获(可抛出的前){
Log.e("ABC","abc",ex);
}
dbc.openToReading();
列表<类别> list = dbc.getAllCategories();
System.out.println("大小:"+list.size());
数据库关闭();
}

公共(public)类 DataBaseCategory {

私有(private) SQLiteDatabase 数据库;
私有(private)上下文上下文;
私有(private) DataBaseCategoryHelper dbCHelper;
私有(private)字符串密码=“密码”;
私有(private)字符串 [] allColumns = { DataBaseCategoryHelper.COLUMN_ID,
DataBaseCategoryHelper.COLUMN_CATEGORY_NAME };
公共(public) DataBaseCategory(上下文上下文){
this.context = 上下文;
SQLiteDatabase.loadLibs(上下文);
dbCHelper = new DataBaseCategoryHelper(this.context);
}
public void openToWriting() 抛出 SQLException{
database = dbCHelper.getWritableDatabase(密码);

}
public void openToReading() 抛出 SQLException {
database = dbCHelper.getReadableDatabase(密码);
}
公共(public)无效关闭(){
dbCHelper.close();
}
/**
* 不是代码的重要部分
*/
}
公共(public)类 DataBaseCategoryHelper 扩展 SQLiteOpenHelper{

public static final String TABLE_COMMENTS = "category";
public static final String COLUMN_ID = "id";
public static final String COLUMN_CATEGORY_NAME = "category_name";
private static final String DATABASE_NAME = "category";
private static final int DATABASE_VERSION = 1;
private static final String DATABASE_CREATE = "创建表"
+ TABLE_COMMENTS + "("+ COLUMN_ID
+ "整数主键自增,"+ COLUMN_CATEGORY_NAME
+ "文本不为空);";
公共(public) DataBaseCategoryHelper(上下文上下文){
super (上下文,数据库名称,空,数据库版本);
}
@覆盖
public void onCreate(SQLiteDatabase 数据库){
尝试 {
database.execSQL(DATABASE_CREATE);

}
catch (异常前){
Log.e("ErroeDBC",ex.toString());
}
}

这真的是我加密/解密数据库所需要的全部吗?我错过了什么吗?

最佳答案

除了从用户那里收集密码而不是硬编码之外,这就是您所需要的。适用于 Android 的 SQLCipher 与使用普通 SQLite 的区别仅在于增量:只需在使用前调用 loadLibs(),然后将密码提供给 getReadableDatabase()getWriteableDatabase()

随着时间的推移,您可能会遇到更多问题,例如当 SQLCipher 更改其数据库格式并且您需要执行升级时,正如从 SQLCipher 2.x 到 3.0.x 所需要的那样。但这些并不常见。

关于android - 我是否使用 SQLCipher 正确加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21124002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com