我正在制作一个28MB大小的sq-lite文件的应用程序,它最初位于android的assets文件夹中。当它在用户中安装时,它将复制到系统文件夹。因为这个db对我来说最重要。如果有人可以获得此文件,那么他可以窃取我的信息。
当您解压缩APK文件时,您将轻松获得sq-lite文件。有没有办法保护它或隐藏它或加密它,这样程序员或黑客就无法通过提取APK文件轻松获取数据库。
答案 0 :(得分:9)
您无法完全保护您的SQLlite数据库,因为有人可以对您的代码进行反向工程并阅读保护机制的内容。
您可以选择其他路径:
1)使数据库在线,即不要将其与您的应用程序放在一起,让您的产品与您的数据库联系并查询它
2)加密SQL Lite中的数据,并在代码中动态解密 - 这将使just
窃取SQL Lite变得更加困难,这不是完美的,但它总比没有好
答案 1 :(得分:3)
也许 SQLCypher 是您的朋友。见here。它提供256位AES加密
答案 2 :(得分:1)
我会加密SQLite中的数据,不可能使它绝对牢不可破,但你可以尝试破解它。查找AES加密/解密以获得正确的加密,您需要在每次使用时对其进行加密和解密。
我也不是100%,但如果你使用你的原始文件夹作为数据库,它应该更难获得。
答案 3 :(得分:0)
您无法完全保护您的SQLite数据库,对我来说,我更喜欢:
1-损坏db文件(将其转换为字节数组并更改某些值)
2-将其复制到资产文件夹中
3-在第一次运行中修复资产中损坏的文件,并将其复制到数据库文件夹中。
我这样更改前200个字节的值:
int index = 0;
for(int i=0;i<100;i++)
{
byte tmp = b[index];
b[index] = b[index + 1];
b[index + 1] = tmp;
index += 2;
}
由于我只替换了前200个字节的值,因此使用相同的代码来修复前200个字节的值。