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');


感谢支持与鼓励~