Для этого вы можете использовать разные языки.Во-первых, избегайте использования логической переменной, то, что возвращает сервер, может быть строкой «что угодно», вот пример:
<?php
// get data param
$data = $_GET['data'];
// get signature param
$signature = $_GET['signature'];
// get key
$key_64 = "";
$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 "good";
} elseif ($ok == 0) {
echo "bad";
} else {
die ("fault, error checking signature");
}
// free the key from memory
openssl_free_key($key);
?>
На стороне клиента вы можете использовать крошечную lib StringCare / AndroidLibrary для шифрования строки и сравнения результатов работы сервера:
result.toString().equals("ecryptedstring")
Если злоумышленник использует apktool, jadx или другие для просмотра кода, он не сможет легко расшифровать строку, библиотека использует java-шифр для генерации X509-сертификата для вашей строки, StringCare для этого требуется последний отпечаток вашего приложения, но имеет .equals может быть заменен на equals (true), вам нужно лучшее запутывание, возможно, используя xor с податливостью с вложеннымпопробуйте поймать и протестировать его с популярными библиотеками, использующими хакер.
Более сложная система - отправить файл purchase.sku, purchase.purchaseToken на сервер Google API, используя in-app-purchasenpm lib , которые помогают проверять подписки и другие.