2

我有一个应用程序,其中添加了导出/导入数据库功能......我想做两件事:

1)导出时:将导出的数据库打乱,使普通人(我知道有些人可以解码最好的伪装技术)无法读取内容...

2) 导入时:验证要导入的文件,以确保它适用于我的应用程序而不是其他任何东西。

我在这里看到了一些关于加密的链接,这些链接可以解决这里的第一点。但我不想做加密。我想做一些简单的加扰。我已经看到一些关于通过检查我的应用程序查找的表来验证表内容的帖子。这是一个很好的解决方案,但我需要先加载文件以验证并在出现错误时回滚。

任何帮助将不胜感激...

4

3 回答 3

1

非常非常简单的方法:在文件中添加一些标题,您可以稍后读回并检查:

// w/o exception handling finally etc
String secret = "zomg,secret";
byte[] header = secret.getBytes();
byte[] buffer = new byte[4096];
FileInputStream in = new FileInputStream("/your/sqlite.db");
FileOutputStream out = new FileOutputStream("/sdcard/the.secretfile");
out.write(header);
int read = 0;
while ((read = in.read(buffer)) != -1) {
    out.write(buffer, 0, read);
}
out.close();
in.close();
于 2012-03-18T01:23:15.150 回答
0

处理这个问题的最好和最简单的方法是生成数据库文件的校验和(MD5),并与你计算的比较。欲了解更多信息

于 2012-03-18T01:32:30.937 回答
0

所以我最终决定使用 cipherinputstream 进行 DES 加密,而不是添加标题来验证完整性,我正在检查我的所有表名是否都存在于正在导入的文件中。我看到 sqlite DB 文件有明文形式的 ddl 语句。这可能不是最优雅/最完整的解决方案,但它确实有效。

于 2012-03-19T14:34:56.250 回答