加密Android设置

时间:2011-03-07 01:37:49

标签: android encryption paypal

对于我的Android应用程序,我想免费发布它,但是有广告。然后,我想让用户选择使用PayPal库以象征性费用删除广告。这样,我不必拥有我必须监控,开发等应用程序的2个单独版本。

无论如何,在用户付费删除广告后,我需要安全地存储一些表明他们付费的内容,这样就不会轻易欺骗我的应用。我该怎么做?我在考虑加密字符串并将该加密值存储在SharedPreferences中。这是一个可行的选择吗?如果有人从他们的设备上取下apk并将其交给其他人,那么SharedPreferences会随之移动,还是会被保存在apk之外?如果有人有root权限怎么办?他们可以欺骗SharedPreferences吗?

如果可能的话,我希望每次启动应用时都不必查询服务器。

谢谢!

4 个答案:

答案 0 :(得分:1)

您可以做的是从您的应用中获取手机中的一些独特数据(设备ID,应用版本......等等)并将其合并到一条消息中。

然后使用公钥/私钥对。公共部分可以在您的应用程序中以及您随身携带的私人部分。

当用户为您的应用付费时,它会向您发送包含设备ID的字符串,依此类推,当您收到付款时,您会发回包含证书的大量数据。

您的应用可以使用公钥根据设备ID或您决定投放的内容验证证书。

还有很多细节需要解决(如何来回发送数据......等等),但是使用这些工具,你应该能够实现你的目标正在寻找。

您可以在此处查看如何管理证书:http://developer.android.com/reference/java/security/cert/package-summary.html

当然,您想要的成熟程度取决于您的应用程序以及人们需要付多少钱。逆向工程绕过所有这一切当然是可能的,但我怀疑很多人会遇到麻烦,如果他们只需支付0.99美元来摆脱广告。

答案 1 :(得分:1)

我会争论几点:

  1. 将您的应用程序重构为免费的广告支持版本和付费版本。您可以打包这样的东西,以便您能够分享几乎每个应用程序的一部分。然后只需在市场上发布免费和付费版本。

  2. 任何愿意为你的副本保护工作的人都不会为你的应用支付费用。

  3. 您提供了价值主张。如果将免费版和付费版分开的唯一内容是广告,那么您的应用最好是用户无法生活的内容。如果您计划扩展具有更多功能的付费版本,那么无论如何,上面的#1可能是更好的主意。

答案 2 :(得分:0)

如果用户足够坚定,他们将能够对您的应用进行反向工程并获得解密密钥,或者只是完全修补您的保护。 SharedPreferences存储在任何人都可以访问的文件中(好吧,也许任何人都可以root访问...)。

总之,省去你自己的努力,甚至不试图保护你的应用......谁会对你的应用进行逆向工程,只是为了摆脱广告呢?

答案 3 :(得分:0)

您可能希望暂时避免使用复杂的保护措施,并等待应用程序内购买到达。我想在那个时候会有一个安全可靠的解决方案。