如何保护android中的sqlite db免遭被盗

时间:2013-12-30 15:02:14

标签: java android sqlite encryption

我正在制作一个28MB大小的sq-lite文件的应用程序,它最初位于android的assets文件夹中。当它在用户中安装时,它将复制到系统文件夹。因为这个db对我来说最重要。如果有人可以获得此文件,那么他可以窃取我的信息。

当您解压缩APK文件时,您将轻松获得sq-lite文件。有没有办法保护它或隐藏它或加密它,这样程序员或黑客就无法通过提取APK文件轻松获取数据库。

4 个答案:

答案 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个字节的值。