2011-06-07 60 views

回答

0

如果您试图加密专用于应用程序的数据,而不是用户,那么您需要访问密钥/令牌/随机数才能解密。除非您正在远程执行加密或使用Android NDK,否则获取密钥/令牌/随机数并解密密钥会很简单。 Apk's没有编译,可以很容易地解压缩,并查看源代码。

+0

这并不是说NDK不会遇到类似的反汇编问题,但与dex文件相比,它并不是微不足道的。 – 2011-06-07 13:56:11

+0

不要这么快猜测OP想要做什么。也许密码是由用户输入的,在这种情况下,你的任何参数都是无效的。 – Felix 2011-06-07 13:56:39

+0

诚然,如果用户提供了更多信息,我们就会知道。 – 2011-06-07 13:58:25

5

你对Java有多了解?您可以使用Android中的所有javax.securityjavax.crypto类(如Cipher)来提供数据加密/解密。

请记住,用户可以直接访问SD卡上的文件(通过安装在PC上并浏览或通过文件管理器应用程序),这意味着有可能无法访问要阅读文件中的数据,用户理论上可以删除在那里创建的目录,如果他们这样选择的话......并且这对您的应用程序可能不是犹太教。

此外,真的没有办法简单地将文件夹设置为“加密”并自动为您保存任何文件。您需要创建要使用的目录,然后在写入/读取数据时加密/解密每个文件。

希望有帮助!

+0

嘿这个链接是行不通的 – 2016-01-09 07:40:40

0

您可以在Android上加密和解密数据,如其他答案中所述。但考虑到“做”会变得更加复杂。

1)使用DES和一个56位的密钥,你不需要在美国的出口许可证。使用AES或TDES 128或256位密钥,你可能需要开始填写文书工作:)

2)除非你想让用户输入一个完全等于你想要种子的密钥大小的密码,然后使用SHA256多哈希密码。

3)您可能需要将密码数据编码为64位字符集(字母大写和小写,数字,+和/)作为密文。这通常需要三个字节的组,将它们扩展为四个字节,并在需要时用=作为填充。只需在网上搜索base64编码解码算法即可。

4)您可能希望将LEVEL OF INDIRECTION添加到方案中,以便用户可以在以后更改密码而不更改文件对称密钥。所以有两种加密方式:用随机对称密钥加密文件,然后用用户密码加密随机对称密钥。啊。

相关问题