【发布时间】:2016-04-16 00:26:56
【问题描述】:
其实我是安卓新手。我们可以加密一个文件夹吗 包含sdcard中的子文件夹和文件并解密回来?
任何帮助将不胜感激。
谢谢。
【问题讨论】:
标签: android
其实我是安卓新手。我们可以加密一个文件夹吗 包含sdcard中的子文件夹和文件并解密回来?
任何帮助将不胜感激。
谢谢。
【问题讨论】:
标签: android
您对 Java 的总体了解程度如何?您可以使用Android中的所有javax.security和javax.crypto类(如Cipher)来提供数据加密/解密。
请记住,用户可以直接访问 SD 卡上的文件(通过安装在 PC 上并浏览或通过文件管理器应用),这意味着有可能,虽然他们可能无法访问读取文件中的数据,理论上用户可以删除您在其中创建的目录,如果他们愿意的话......这可能不适合您的应用程序。
此外,确实没有办法简单地将文件夹设置为“加密”并自动为您保护其中的任何文件。您需要创建要使用的目录,然后在写入/读取数据时加密/解密每个文件。
希望有帮助!
【讨论】:
如果您尝试加密您的应用程序而不是用户的私有数据,那么您需要访问密钥/令牌/nonce 才能解密。除非您正在远程进行加密或使用 Android NDK,否则获取密钥/令牌/随机数并对其进行解密将是微不足道的。 Apk 未编译,可以轻松解包并查看源代码。
【讨论】:
您当然可以按照其他答案中的说明在 Android 上加密和解密 数据。但考虑到“做”变得更加复杂。
1) 使用 DES 和 56 位密钥,您在美国不需要出口许可证。使用 128 位或 256 位密钥的 AES 或 TDES,您可能需要开始填写文书工作 :)
2) 除非您希望用户输入的密码与您可能想要播种的密钥大小完全相同,然后使用 SHA256 对密码进行多重哈希处理。
3) 您可能需要将密码数据编码为 64 位字符集(大小写字母、数字、+ 和 /)作为密文。这通常需要三个字节的组,在需要时将它们扩展为四个字节,并用 = 作为填充。只需在互联网上搜索 base64 编码解码算法即可。
4) 您可能希望在方案中添加一个 LEVEL OF INDIRECTION,以便用户可以在以后更改密码而不更改文件对称密钥。所以有两种加密,用随机对称密钥加密文件,然后用用户密码加密随机对称密钥。哎呀。
【讨论】: