这个公钥==私钥怎么样?

时间:2015-08-20 16:26:42

标签: php wordpress key licensing license-key

这是使用此wordpress plugin进行测试的一部分,它基本上是一个许可证管理器。我试图了解系统的内部。这是它的工作原理。

插件激活后,会使用简单的函数55d0ec3f9db414.02268045生成私钥'lic_verification_private_secret' => uniqid('', true)。现在,当有人购买物品时,例如。 wordpress插件,生成公共许可证密钥55d5d22ab70d2(使用uniqid())。然后将公钥发送到客户的电子邮件ID。客户将该密钥输入其站点并向许可证服务器发送请求。下面是一个关于许可证管理器插件@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';

1 个答案:

答案 0 :(得分:1)

共享密钥:

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?";
}

密钥可以是许可证btw,因为那是你想要保密的内容。