我有一个应用程序,其中我添加了导出/导入数据库功能...我想做两件事:
1)导出时:将导出的数据库打乱,使普通人(我知道有些人可以破译最好的伪装技术)无法读取内容……
2)导入时:验证要导入的文件,以确保它适用于我的应用程序,而不是其他任何内容。
我在这里看到了一些关于加密的链接,可以在这里解决第一个问题。但我不想做加密。我想做一些简单的乱码。我还看到了一些关于通过检查应用程序查找的表来验证表内容的帖子。这是一个很好的解决方案,但我需要首先加载文件以进行验证,并在出现错误时回滚。
任何帮助都将不胜感激。
发布于 2012-03-19 22:34:56
因此,我最终决定使用cipherinputstream进行DES加密,而不是添加标头来验证完整性,而是检查要导入的文件中是否存在所有的表名。我看到sqlite DB文件包含明文形式的ddl语句。这可能不是最优雅/完整的解决方案,但它是有效的。
发布于 2012-03-18 09:23:15
非常非常简单的方法:在文件中添加一些头文件,稍后您可以重新读入并检查:
// 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-18 09:32:31
处理此问题的最好且简单的方法是生成数据库文件的校验和(MD5),并与按计算得出的校验和进行比较。For more info
https://stackoverflow.com/questions/9755213
复制相似问题