我们的谷歌应用内购买存在问题。在某些(但只有一些!!)付款时,我们在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;
}
有人知道如何摆脱这个问题吗?