use*_*632 7 python android in-app-billing
有时,在一个人通过IAB和Android设备进行购买后,由于"TypeError:Incorrect padding"异常,客户端发送回服务器的签名无法进行base64解码.
服务器代码如下所示,其中"signature"从我们的客户端传递到服务器,从IAB API获取值:
signature_encoded = signature.encode()
key = RSA.importKey(GOOGLE_PLAY_STORE_KEY_PEM)
verifier = PKCS1_v1_5.new(key)
signed_data_hash = SHA.new(signed_data)
# fails here SOMETIMES
signature_decoded = base64.urlsafe_b64decode(signature_encoded)
Run Code Online (Sandbox Code Playgroud)
"签名"字符串的长度应该可以被4整除,但有时它们的长度为342并给出这个填充错误.
我已经尝试添加"=="到最后,这让我们绕过异常,但与"signed_data_hash"相比,结果无效(即verifier.verify(signed_data_hash,signature_decoded)返回False).
我不认为这是一次黑客攻击,因为我们看到的客户日志表明他们正在通过我们的购买流程.
这里的任何帮助将不胜感激!谢谢!
| 归档时间: |
|
| 查看次数: |
658 次 |
| 最近记录: |