2016-03-29 45 views
-2

我有一个Android应用程序在开发中有大量基于文本的数据(实质上这个应用程序是一个参考/学习指南)。在Android应用程序中加密大量文本数据的最佳方法?

我想确认一下,如果设备上APK的进程版本被从设备中拉出并“反编译”,则文本数据以某种方式被加密。有没有什么方法来加密文本数据,以便文本在提取时不可用?

+0

是什么让你认为用于加密文本的密钥没有从apk中提取并用于解密这些文本? –

+0

这个关键问题正是我问这个问题的原因。我已经遇到了关键问题,并且我从您的回复中认为,您至少知道无法保护密钥并仍然允许访问数据。我假设它可能只是不可行,但我仍然不得不问。 – user155205

+0

没错。像proguard这样的混淆器只能隐藏这些信息,而不是懒惰的“黑客”,但不能完全保护这些信息。如果你想加密某些东西,那么你仍然需要解密密钥。 –

回答

0

使用AES加密对文本进行加密。使用带有随机IV的PKCS#7néePKCS#5填充和CBC模式,在加密数据前面加上IV。您还应该预先加密用于身份验证的数据的散列。

您可以查看RNCryptor-Spec了解数据布局的想法。 ​​用于实现包括IV,加密认证,版本控制。

+0

感谢加密方法的所有链接。我遇到的任何加密方法遇到的最大问题都是关于必须让apk中的密钥“暴露”才能访问加密数据。任何关于如何以某种方式不公开密钥但仍以某种方式仍然对代码中的数据进行加密/解密的想法。 (我意识到这是一个很高的命令,但我认为有人必须面对这个问题,并提出一些聪明的想法/解决方法)。即使我可以仅仅加密APK,超出了职业后卫提供的那种优秀的。 – user155205

+0

保持加密密钥的秘密是一个问题,在手机上没有完整的解决方案。显然,在使用密钥进行加密/解密时,它必须存储在内存中,并且可以由熟练的攻击者获得。如果密钥被编译到应用程序中,任何可以获得对应用程序二进制文件访问权限的人都可以访问该密钥,那么最好的办法就是以某种方式对其进行混淆处理,可能会对其进行编码并将其拆分,然后搜索此类方法。如果密钥在运行时创建,请将其保存在Android密钥库中,注意用户将有权访问该密钥。您可能需要的是DRM解决方案。 – zaph

+0

您可能已经找到了拆分密钥的解决方案,然后以某种方式使用混淆处理来使用户几乎不可能将密钥放回到一起。我将深入研究proguards混淆过程,看看如何“完成”我可以完成这个过程。非常感谢! – user155205

相关问题