谷歌签名验证失败

时间:2015-04-21 12:23:26

标签: java android in-app-purchase payment

我们的谷歌应用内购买存在问题。在某些(但只有一些!!)付款时,我们在Java后端验证google Signature时收到错误:

签名长度不正确:得到217,但期待256

不正确的长度与217,218,261,262,263

不同

但大多数付款都按预期工作。

我们使用以下代码在Java中进行验证:

private boolean verifySignature(String signedData, String signature)
    throws NoSuchAlgorithmException, InvalidKeyException, SignatureException {
    Signature sig;
    PublicKey publicKey = generatePublicKey();
    if (publicKey == null) {
        return false;
    }
    sig = Signature.getInstance("SHA1withRSA");
    sig.initVerify(publicKey);
    sig.update(signedData.getBytes());
    Base64 base64 = new Base64();
    if (!sig.verify(base64.decode(signature))) {
        return false;
    }

    return true;
}

有人知道如何摆脱这个问题吗?

0 个答案:

没有答案