如何加密资产

时间:2013-03-07 12:40:09

标签: android security encryption assets

我即将发布一个在Assets /文件夹中包含大量JavaScript的应用程序。我缩小了最小化&将所有内容(JS)组合成500kb左右的大文件。我正在寻找加密它的方法,并将其从资产文件夹中隐藏。

您认为最佳方法是什么?

  1. 在Java Class中存储为普通字符串,并且(我不知道是否可能)告诉proguard专门加密它。 - >我会通过WebView

  2. 将其投放到onintercepturlloading
  3. 作为加密文件存储在Assets中,使用任何第三方或Java加密例程进行热解密 - 我想听听。

  4. 无论你想要什么

  5. 理想情况下,解决方案应作为构建过程的一部分包含在内,但如果没有其他解决方案,我会手动生成加密数据。

    编辑:DexGuard似乎是专业的方式,但它是350欧元,任何免费的替代品?

    请不要问我为什么要加密它。我需要这样做,就像有一天你需要去看牙医。

2 个答案:

答案 0 :(得分:2)

我建议你不要依赖第三方工具,因为你可能会成为供应商锁定的,这意味着如果他们停止开发软件等等。我会将Javascript的内容放在一个大的最终静态String中,然后正如你所说的那样告诉Proguard做它的神奇。

取自Proguard的documentation

  

ProGuard是否加密字符串常量?

     

没有。程序代码中的字符串加密必须是完全可逆的   根据定义,它只会提高混淆程度。它增加了   代码的足迹。然而,受到人们的普遍需求,ProGuard's   适用于Android的闭源兄弟DexGuard确实支持字符串   加密,以及类加密和隐藏访问   敏感的API。

答案 1 :(得分:0)

绝对没有什么可以被视为安全。因此,混淆几乎是浪费精力和获得安全性之间的最佳折衷方案(使黑客攻击更加困难,但很少)。

保护加密方案需要密钥。你没有地方可以隐藏你的钥匙。您可以在APK中使用它,也可以让APK从某个服务器下载。使用合适的工具很容易发现两者。

如果你只想减慢黑客的速度,那么就去做一些简单的事情吧。在不同位置传播javascript部分,并使用一些简单快速的编码对其进行编码,如base64。然后在飞行中组合它们。一个专业的人会像任何加密方案一样破坏它,但你不会浪费很多分钟来实现它。有更多时间来编写您的实际应用。

DexGuard完成了我上面描述的内容(字符串混淆),但对于独立开发者而言,我觉得它非常昂贵(最便宜的许可证是350美元)。