从Android In App Billing版本3(TrivialDrive)附带sdk的示例应用程序

MainActivity.java

/* base64EncodedPublicKey should be YOUR APPLICATION'S PUBLIC KEY
 * (that you got from the Google Play developer console). This is not your
 * developer public key, it's the *app-specific* public key.
 *
 * Instead of just storing the entire literal string here embedded in the
 * program,  construct the key at runtime from pieces or
 * use bit manipulation (for example, XOR with some other string) to hide
 * the actual key.  The key itself is not secret information, but we don't
 * want to make it easy for an attacker to replace the public key with one
 * of their own and then fake messages from the server.
 */
String base64EncodedPublicKey = "CONSTRUCT_YOUR_KEY_AND_PLACE_IT_HERE";

好吧,我不确定我是否了解此安全措施。我知道如何从Google Play开发者控制台获取应用程序公钥(已经进行了64位编码)。

我不明白的是这部分
 /* Instead of just storing the entire literal string here embedded in the
 * program,  construct the key at runtime from pieces or
 * use bit manipulation (for example, XOR with some other string) to hide
 * the actual key
 */

据我所知,此公钥是一个常量字符串,它是Google在应用程序上传过程中提供的。

我们如何使用任何位操作过程以编程方式创建相同的 key ?有人做过吗?是否有任何有关如何执行此操作的示例代码?

最佳答案

像这样的东西:

String Base64EncodedPublicKey key = "Ak3jfkd" + GetMiddleBit() + "D349824";

或者
String Base64EncodedPublicKey key =
         DecrementEachletter("Bl4kgle") + GetMiddleBit() + ReverseString("D349824");

或没有将 key 放在base64纯文本中的任何字符串中的任何内容。也许不将 key 存储在base64中的东西也是一个好主意,因为原始base64文本片段很容易被发现。

这不是保护 key 的特别好的方法。但这可以防止琐碎的攻击,因为有人可以在您的APK中搜索文字字符串,以查找类似于base64编码的公钥的东西。至少您可以使#$#$ ers稍微起作用。

如果邪恶的人识别出您的公钥,那么他们可能会做坏事。显然,谷歌似乎是这么认为的。我可以猜到此步骤的作用,但是我不确定我是否真的想在一个开放的论坛中对此进行推测,并给任何人任何想法。不过您想这样做。

基本的绘图摘要将是您使某人编写以编程方式取消LVL应用程序的应用程序变得更加困难。

有人假设这样做的人靠破解20或30,000个android应用并重新发布它们为生。我想,如果实际上他们需要做一点点手动操作,那么他们可能不需要花十分钟就可以将您的应用程序添加到已经被某个程序破坏的20,000个Android应用程序列表中。除非您有顶级应用程序。然后这场战斗可能是无止境的,最终可能是徒劳的。

将 key 分成连续的块(如另一个答案中所建议的)可能还不够好。因为 key 将以APK中字符串常量表中的连续字符串结尾。用程序很难找到它。

关于android - Android应用程式内结帐: securing application public key,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14352758/

10-09 01:59