袁来如此的工作笔记
袁来如此的工作笔记
竹杖芒鞋轻胜马,谁怕? 一蓑烟雨任平生。

php简单版Token授权

浏览量:166

/** 生成签名授权
 *
 * @param $str,签名对象
 * @param $key,密钥
 * @param $expiry,有效期,单位秒
 **/
function yang_encode($str, $key='', $expiry=''){
// 过期时间: 当前Unix秒数+有效期
$ctime = time() + $expiry;

// 生成签名授权码: 将三个参数以&符号拼接,进行md5加密并取加密值的末8位,再与$ctime拼接
$sign_str = substr(md5($str.'&'.$key.'&'.$ctime), -8).$ctime;
return $sign_str;
}
// 示例
//echo yang_encode('aabbcc', 'UsG5kw67RB', '3600');


/** 解密签名授权
 *
 * @param $sign_str,签名授权码
 * @param $str,签名对象
 * @param $key,密钥
 * @param $expiry,有效期,单位秒
 **/
function yang_decode($sign_str, $str, $key='', $expiry=''){
// 验证授权码完整性(18个字符)
if( strlen($sign_str) != 18){
return "签名授权码不完整,验证失败! ";
exit;
}

// 拆分字符串 $sign_str
$str1 = substr($sign_str, 0, 8); // 签名授权
$str2 = substr($sign_str, 8, 10); // 过期时间

// 构造签名验证字符串
$sign = substr(md5($str.'&'.$key.'&'.$str2), -8);

$de = ( ($str2-time())>0 && ($str2-time())<$expiry && ($sign==$str1) ) ? 1 : 0;

return $de;
}

// 示例
//echo yang_decode('ae6648711483724340', 'aabbcc', 'UsG5kw67RB', '3600');
打赏