在运行时保持数据解密

时间:2014-05-02 15:36:30

标签: android security encryption android-keystore

在我的应用中,我生成并保存私钥。它们使用AES进行加密,如此处所述(http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html)。我已经在熟悉的主题(http://nelenkov.blogspot.com/2012/05/storing-application-secrets-in-androids.html)上看到了另一个条目,但是这个解决方案并不保证可以在所有设备上工作。

除了一件事,一切都很好。每次usertime想要访问其中一个加密文件(或创建新文件),他需要输入密码/密码(这非常令人沮丧)。我正在寻找一种方法以某种方式避免这种情况,因此只要用户不留下应用程序,就会存储他的密码。

我找到的唯一解决方案是在用户输入密码并将其保存在内存中后加载所有内容,但我认为不是很好。

2 个答案:

答案 0 :(得分:1)

将密钥缓存一段特定时间(例如10分钟)并在之后清除它们。您可以使用AlarmService为此设置警报。有一个图书馆项目为你做这个,但我还没有亲自使用它:

https://github.com/guardianproject/cacheword

答案 1 :(得分:0)

为什么不创建自定义Application子类,并将密码存储在那里?

类似于:

public class App extends Application {
    private static String sPassword;

    public String getPassword() {
        return sPassword;
    }
}

然后使用它:

String password = ((App) context.getApplication()).getPassword();
if(password != null && !password.isEmpty() {
    // Decrypt files
} else {
    // Prompt user for password, and save it to the Application
}

您还必须在清单中指定自定义应用程序:     <application android:name="com.my.awesome.App" ....