如何保存从Android应用程序中提取的数据库

时间:2014-07-09 21:35:18

标签: android google-play apk proguard decompiling

我只是看着即使你在你的应用程序中应用proguard,仍然可以通过提取/破坏你的应用程序来使用你的数据库(数据集,假设测验数据),就像你有测验应用程序一样,人们可以轻松提取你的测验数据库(数据集)通过你的apk,我们如何保存它,所以没有人可以提取或可以得到它,我找到的一种方法是将我们的应用程序数据库放在网上所以可以通过网络使用它,如果他/她关闭互联网应用程序应该停止工作。但是,如果我们让它也能脱机播放,我们怎么能保存我们的数据库呢。

2 个答案:

答案 0 :(得分:2)

最好的选择是使用SQLCipher:http://sqlcipher.net/sqlcipher-for-android/

我已成功使用它,效果很好。

我会为你复制他们的例子,所以你可以看到它是多么简单:

package com.demo.sqlcipher;

import java.io.File;
import net.sqlcipher.database.SQLiteDatabase;
import android.app.Activity;
import android.os.Bundle;

public class HelloSQLCipherActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        InitializeSQLCipher();
    }

    private void InitializeSQLCipher() {
        SQLiteDatabase.loadLibs(this);
        File databaseFile = getDatabasePath("demo.db");
        databaseFile.mkdirs();
        databaseFile.delete();
        SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
        database.execSQL("create table t1(a, b)");
        database.execSQL("insert into t1(a, b) values(?, ?)", new Object[]{"one for the money",
                                                                        "two for the show"});
    }
}

答案 1 :(得分:1)

您想要查看数据库加密。

一种简单的方法是创建一种方法,在将消息保存到数据库之前对其进行“加密”。该方法应该很容易逆转。

一个简单的例子是XOR要保存的位。 关于XOR的一个非常好的事情是,通过在数据上重新应用相同的方法将解密消息。 但是,您可以在this answer中查看java中的一些实现示例,而不是重新发明轮子。

如果你想使用数据库,

This Stack Overflow answer似乎有很多有用的信息。 如果您更喜欢使用文件,例如XML文件have a look at this answer