Skip to content

Instantly share code, notes, and snippets.

@liyu001989
Last active December 15, 2016 04:44
Show Gist options
  • Save liyu001989/4c76be885db748775e28137d19b34f30 to your computer and use it in GitHub Desktop.
Save liyu001989/4c76be885db748775e28137d19b34f30 to your computer and use it in GitHub Desktop.
hmac sign and verify
<?php
function sign($signKey = '', Array $params = [])
{
// 去除空值
$params = array_filter($params);
ksort($params);
$signParams = [];
// 拼接为key=value&key1=value1
foreach($params as $key => $value) {
$signParams[] = $key.'='.$value;
}
// 使用&链接参数
$signString = implode('&', $signParams);
return base64_encode(hash_hmac('sha1', $signString, $signKey));
}
function verify($signKey, Array $params = [])
{
$sign = $params['sign'] ?? '';
if (!$sign) {
return false;
}
unset($params['sign']);
return sign($signKey, $params) == $sign;
}
$params = [
'foo' => 'bar',
'aaa' => 'bbb',
'app_id' => '123',
];
$sign = sign('d8a45108b62405660b05f226a160de33', $params);
echo $sign;
echo PHP_EOL;
$params['sign'] = $sign;
echo verify('d8a45108b62405660b05f226a160de33', $params) ? 'true' : 'false';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment