数据令牌的传递的生成、验证和解析


<?php

function base64UrlDecode($input)
{
return base64_decode(strtr($input, '-_', '+/'));
}
function base64UrlEncode($input)
{
return base64_encode(strtr($input, '+/', '-_'));
}

// 生成令牌
function parseSignedRequest($signed_request, $secret='4f5fcdc6514f7ee25ec4fa7c7853e8e1')
{
list($encoded_sig, $payload) = explode('.', $signed_request, 2);

// decode the data
$sig = base64UrlDecode($encoded_sig);
$data = json_decode(base64UrlDecode($payload), true);

if (strtoupper($data['algorithm']) !== 'HMAC-SHA256')
{
die('Unknown algorithm. Expected HMAC-SHA256');
return null;
}

// check sig
$expected_sig = hash_hmac('sha256', $payload,$secret, $raw = true);
if ($sig !== $expected_sig)
{
die('Bad Signed JSON signature!');
return null;
}

return $data;
}

// 解析
function generateSignature($info,$secret='4f5fcdc6514f7ee25ec4fa7c7853e8e1')
{
$body = base64UrlEncode(json_encode(($info)));
$sign = hash_hmac('sha256', $body,$secret,true);

$signed_request = base64UrlEncode($sign) . "." . $body;

return $signed_request;
}

$info = array(
'algorithm'=> 'HMAC-SHA256',
"userId" => 'aaa',
'userName' => 'asdsad',
'sex' => '1'
);

print_R(parseSignedRequest(generateSignature($info)));

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值