我正在尝试验证购买时收到的 android 帐单收据的真实性。验证是服务器端的,但我想如果有时服务器可能已关闭,我可能会检查应用程序本身的签名..
这是我在服务器上验证购买的方式..
<?php
// get data param
$data = $_GET['response'];
// get signature param
$signature = $_GET['signature'];
// get key
$key_64 = "MY Base64 KEY FROM DEVELOPER CONSOLE";
$key = "-----BEGIN PUBLIC KEY-----\n".
chunk_split($key_64, 64,"\n").
'-----END PUBLIC KEY-----';
//using PHP to create an RSA key
$key = openssl_get_publickey($key);
// state whether signature is okay or not
$ok = openssl_verify($data, base64_decode($signature), $key, OPENSSL_ALGO_SHA1);
if ($ok == 1) {
echo "verified";
} elseif ($ok == 0) {
echo "unverified";
} else {
die ("fault, error checking signature");
}
// free the key from memory
openssl_free_key($key);
?>
那么如何在 Android 上做同样的事情呢?