Java 为Android应用程序加密文件夹?

Java 为Android应用程序加密文件夹?,java,android,security,file,encryption,Java,Android,Security,File,Encryption,我正在使用的应用程序从SD卡获取所有文件,但这些文件非常重要,应用程序应该维护一个安全问题。那么,是否有一种方法可以对包含该文件的文件夹或目录进行加密或使用密钥锁定,并且只供我的应用程序使用? 请帮助我,因为我是新手,在这一点上陷入困境。看看这些资源: 您应该知道,当然不应该将加密数据的密钥存储在明文中,而应该使用用户可以选择的密码或类似密码对其本身进行加密。这是创建新文件夹的方法: String SaveFolder = "/Save"; String extStorage

我正在使用的应用程序从SD卡获取所有文件,但这些文件非常重要,应用程序应该维护一个安全问题。那么,是否有一种方法可以对包含该文件的文件夹或目录进行加密或使用密钥锁定,并且只供我的应用程序使用?
请帮助我,因为我是新手,在这一点上陷入困境。

看看这些资源:


您应该知道,当然不应该将加密数据的密钥存储在明文中,而应该使用用户可以选择的密码或类似密码对其本身进行加密。

这是创建新文件夹的方法:

String SaveFolder = "/Save";
        String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
        File mySaveFolder = new File(extStorageDirectory + SaveFolder);
        mySaveFolder.mkdir();
在创建时已在
公共void中获取此代码
现在它创建了一个名为“Save”的文件夹

编辑: 我看没有办法设置密码什么的。
虽然我在这里读到过,但可以将文件保存在内存中,用户也无法访问内存,但我从未使用过,因此我无法帮助您。在Android上,存储在SD卡上的任何内容都不受权限保护,任何有权触摸SD卡的应用程序都可以访问基本上,你需要假设,如果你把资源放在那里,任何人都可以访问它们。因此,你是对的,你想加密这些资源,这样即使有这种访问,也没有人可以访问它们

Android提供了大量对知名加密技术的支持。在这种情况下,您需要使用对称加密。当前的最佳实践是使用256位密钥的AES,所有这些密钥都在Android类库中本机支持。在开发人员在线文档和其他文档中有大量关于如何实现这一点的资源在(免责声明:我是这本书的作者)中,详细介绍了您需要考虑的所有问题,并编写了整个过程的示例代码


您确实需要一个密钥来加密此数据,并且您需要对该密钥保密(知道该密钥的任何人都可以对数据进行解密)。您有两个选项…(1)每次用户使用应用程序时都要求用户输入密码,然后从该密码派生密钥,或者(2)将密码存储在您的应用程序中。(2)这是危险的,因为Android应用程序可以很容易地进行反向工程,攻击者只需查看您的应用程序并找到密钥即可最好是这样,因为没有为攻击者存储可恢复的密钥…折衷是,用户需要键入密码才能使用应用程序。您应该在这里做的是风险分析功能…此数据有多重要?您是否需要以强有力的方式对其进行保护,或者您对其进行保护只是为了让应用程序更困难n攻击者?根据您的用例和数据的敏感性/风险,只有您可以回答这个问题。

也许可以将文件夹设置为“不可见”(隐藏文件夹)?不知道这是否足够好?是的,那太好了。你知道类似的事情吗?老实说,不,不是真的,但是看看这两篇文章:使用“.”是可能的在文件夹名称的开头。但是如果folderWell使用相同的文件夹,则没有安全性。然后不是,但在我的应用程序中,我使用自定义名称创建了一个新的自定义文件夹。