You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
51 lines
1.1 KiB
51 lines
1.1 KiB
10 months ago
|
<?php
|
||
|
|
||
|
namespace addons\shopro\controller\traits;
|
||
|
|
||
|
/**
|
||
|
* 统一 md5 方式可解密签名校验,客服使用
|
||
|
*/
|
||
|
trait UnifiedToken
|
||
|
{
|
||
|
|
||
|
protected $expired = 86400000;
|
||
|
|
||
|
/**
|
||
|
* 获取加密 token
|
||
|
*
|
||
|
* @param string $content 要加密的数据
|
||
|
*/
|
||
|
public function getUnifiedToken($content)
|
||
|
{
|
||
|
$custom_sign = sheep_config('basic.site.sign') ?: 'sheep';
|
||
|
return base64_encode(md5(md5($content) . $custom_sign) . '.' . $content . '.' . time());
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* 获取被加密数据
|
||
|
*/
|
||
|
public function getUnifiedContent($token)
|
||
|
{
|
||
|
$custom_sign = sheep_config('basic.site.sign') ?: 'sheep';
|
||
|
|
||
|
$token_str = base64_decode($token);
|
||
|
$tokenArr = explode('.', $token_str);
|
||
|
|
||
|
$sign = $tokenArr[0] ?? '';
|
||
|
$content = $tokenArr[1] ?? 0;
|
||
|
$time = $tokenArr[2] ?? 0;
|
||
|
$time = intval($time);
|
||
|
|
||
|
if ($content && $sign) {
|
||
|
if (md5(md5($content) . $custom_sign) == $sign && ($time + $this->expired) > time()) {
|
||
|
return $content;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
}
|
||
|
}
|