我正在使用Xamarin应用程序实现Google Play应用内结算,因此我查看了android和xamarin文档.他们都建议使用模糊的方法来混淆应用程序中的公钥:
http://developer.android.com/training/in-app-billing/preparing-iab-app.html
安全建议:强烈建议您不要对Google Play提供的确切公共许可证密钥字符串值进行硬编码.相反,您可以在运行时从子字符串构造整个公共许可证密钥字符串,或者在将其传递给构造函数之前从加密存储中检索它.这种方法使恶意第三方更难以修改APK文件中的公共许可证密钥字符串.
http://components.xamarin.com/gettingstarted/xamarin.inappbilling/true
虽然最佳做法是在远程服务器上而不是在设备上执行签名验证,但这可能并非总是可行.另一种技术是混淆您的Google Play公钥,并且永远不会将已组装的密钥存储在内存中.Xamarin.InAppBilling提供了Unify例程,可用于将您的Google Play公钥分成两个或多个部分,并使用一个或多个键/值对对这些部分进行模糊处理.此外,Xamarin.InAppBilling始终在内存中加密您的私钥.以下是使用Unify对私钥进行模糊处理的示例:
string value = Security.Unify ( new string[] { "X0X0-1c...", "+123+Jq...", "//w/2jANB...", "...Kl+/ID43" }, new int[] { 2, 3, 1, 0 }, new string[] { "X0X0-1", "9V4XD", "+123+", "R9eGv", "//w/2", "MIIBI", "+/ID43", "9alu4" })
但无处解释,这里的交易是什么.为什么有人想看到这把钥匙?如何看到/替换我的APK中的密钥会有什么好处?这里有什么可能的"攻击"?谢谢.