Это часть теста с этим плагин WordPress который в основном менеджер лицензий. Я пытаюсь понять внутренности системы. Вот как это работает.
Как только плагин активирован, он генерирует закрытый ключ 55d0ec3f9db414.02268045
используя простую функцию 'lic_verification_private_secret' => uniqid('', true)
, Теперь, когда кто-то делает покупку предмета, например. плагин WordPress, открытый лицензионный ключ 55d5d22ab70d2
генерируется (используя uniqid()
). Открытый ключ затем отправляется на электронный адрес клиента. Клиент вводит этот ключ на свой сайт и отправляет запрос на сервер лицензий. Ниже приведена функция о том, как плагин менеджера лицензий @server сопоставляет закрытый ключ с открытым ключом.
static function verify_secret_key() {
$slm_options = get_option('slm_plugin_options');
$private_secret_key = $slm_options['lic_verification_private_secret'];
$public_key = strip_tags($_REQUEST['secret_key']); //this is sent in the query string
if ($public_key == $private_secret_key) {
// send a message back to client saying the key is verified.
}
Все это работает, поэтому, в принципе, где я в тупике, так это то, как справедливо приведенное ниже уравнение? Какую часть картины мне не хватает?
55d5d22ab70d2 == 55d0ec3f9db414.02268045
Обновление — я выполнил этот тест, и он отражает ложь, которая, я думаю, очевидна.
echo '55d0ec3f9db414.02268045' === '55d5d22ab70d2' ? 'true' : 'false';
Общий секретный ключ:
function generate_signature($message, $secret) {
$serialized_message = serialize($message);
return md5($serialized_message . $secret);
}
$secret = "i like pie";
$content = array(
"i like" => "pie",
"pancakes" => "are also nice");
$message = serialize(array(
"signature" => generate_signature($content , $secret),
"content" => $content
));
// send the message
$message = unserialize($_POST["message"]);
$signature = generate_signature($message["content"], $secret);
if ($signature === $message["signature"]) {
echo "ok";
} else {
echo "you don't like pie?";
}
Секретным ключом может быть лицензия между прочим, так как это то, что вы хотите сохранить в секрете.
Других решений пока нет …