这个 public key == private key 是怎么来的

How is this public key == private key

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

激活插件后,它会使用一个简单的函数 'lic_verification_private_secret' => uniqid('', true) 生成私钥 55d0ec3f9db414.02268045。现在,当有人购买商品时,例如。 一个 wordpress 插件,生成一个 public 许可证密钥 55d5d22ab70d2(使用 uniqid())。然后 public 密钥被发送到客户的电子邮件 ID。客户将该密钥输入他的站点并向许可证服务器发送请求。下面是关于许可证管理器插件@server 如何将私钥与 public 密钥匹配的函数。

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

密钥可以是许可证顺便说一下,因为那是你想要保密的。