这是使用此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';
答案 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,因为那是你想要保密的内容。