Php 如何在两台独立的服务器之间创建共享密钥凭证代码系统?
鉴于此工作流: 服务器APhp 如何在两台独立的服务器之间创建共享密钥凭证代码系统?,php,encryption-symmetric,Php,Encryption Symmetric,鉴于此工作流: 服务器A $voucher = generateVoucherCode("someSharedSecret"); 用户验证 用户使用共享密钥购买随机生成的唯一凭证代码,以使用服务器B上的应用程序 服务器B $isValid = validateVoucherCode($userInputtedCode, "someSharedSecret"); if($isValid) { // allow access to application } 用户验证 用户输入凭证代码
$voucher = generateVoucherCode("someSharedSecret");
$isValid = validateVoucherCode($userInputtedCode, "someSharedSecret");
if($isValid) {
// allow access to application
}
generateVoucherCode
和validateVoucherCode
,如下所示:
服务器A
$voucher = generateVoucherCode("someSharedSecret");
服务器B
$isValid = validateVoucherCode($userInputtedCode, "someSharedSecret");
if($isValid) {
// allow access to application
}
通过共享秘密验证合法性是我们的目的。您可以通过以下方式在PHP中生成HMAC。您的工作流程将是:
$secret = '$uper$ecret$tring';
$code = 'a pet unicorn';
$voucher = $code.'/'.hash_hmac('sha512', $code, $secret);
echo 'Your voucher is '.$voucher';
凭证验证示例:
$secret = '$uper$ecret$tring';
list ($code, $hmac) = explode('/', $voucher);
$verify_hmac = hash_hmac('sha512', $code, $secret);
if ($hmac === $verify_hmac) {
echo 'Your voucher can be redeemed for '.$code';
}
else {
echo 'Invalid voucher, sorry';
}
我建议提供一个双方都可以交谈的服务(无论是在a还是B上——这都不重要)。这样,将来您就可以灵活地使用服务器C、服务器D等,并在需要时移动服务本身。