Google Play in app billing 算法中的 "signature" 是什么

What is "signature" in Google Play in app billing algorithm

Google play 使用 encryption/decryption 的 RSA 算法。在google play返回的数据中,有一个名为"signature"的字段。

Bundle containing the following key-value pairs
"RESPONSE_CODE" with int value, RESULT_OK(0) if success, other response codes on failure as listed above.
"INAPP_PURCHASE_ITEM_LIST" - StringArrayList containing the list of SKUs
"INAPP_PURCHASE_DATA_LIST" - StringArrayList containing the purchase information
"INAPP_DATA_SIGNATURE_LIST"- StringArrayList containing the signatures of the purchase information
"INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the next set of in-app purchases. Only set if the user has more owned skus than the current list.

我想知道 IInAppBillingService 方法(getSkuDetailsgetBuyIntentgetPurchases)中使用的 "Signature" 和 "Signature list" 是什么。

来自 Android 开发者网站中的参考资料:

INAPP_DATA_SIGNATURE - String containing the signature of the purchase data that the developer signed with their private key. The data signature uses the RSASSA-PKCS1-v1_5 scheme.

购买签名是通过使用与您的开发者帐户关联的私钥对 INAPP_PURCHASE_DATA 进行签名而创建的字符串。您可以使用签名来验证购买数据没有被任何方式篡改,用户是否真的购买了您的应用。

由于签名过程是使用私钥完成的,验证应该在远程服务器上进行,而不是在设备本身上进行,因此如果您希望使用此安全性,则需要实现自己的验证服务器功能。