src/thinkextend/Crypt.php
public static function decrypt($value, $key, $target = 'url')
    {
        // Base64解码
        $value = Base64::decode($value, $target);
        // 拆分加密结果(校验码, 有效期, 初始化向量, 加密数据)
        $hmac   = substr($value, 0, self::HMAC_SIZE);
        $expire = substr($value, self::HMAC_SIZE, self::EXPIRE_SIZE);
        $iv     = substr($value, self::HMAC_SIZE + self::EXPIRE_SIZE, self::IV_SIZE);
        $value  = substr($value, self::HMAC_SIZE + self::EXPIRE_SIZE + self::IV_SIZE);
        // 超出有效期
        if (time() > hexdec(bin2hex($expire))) {
            return false;
        }
        // 验证密文是否被篡改
        if (static::compareString(static::hmac($iv, $value, $key), bin2hex($hmac)) === false) {
            return false;
        }
        // 解密数据
        $value = openssl_decrypt($value, self::CIPHER_MODE, $key, OPENSSL_RAW_DATA, $iv);
        if ($value === false) {
            return false;
        }
        // 反序列化
        $value = static::unpacking($value);
        // 返回解密结果
        return $value;
    }
public static function decrypt($value, $key, $target = 'url')
    {
        // Base64解码
        $value = Base64::decode($value, $target);
        // 拆分加密结果(校验码, 有效期, 初始化向量, 加密数据)
        $hmac   = substr($value, 0, self::HMAC_SIZE);
        $expire = substr($value, self::HMAC_SIZE, self::EXPIRE_SIZE);
        $iv     = substr($value, self::HMAC_SIZE + self::EXPIRE_SIZE, self::IV_SIZE);
        $value  = substr($value, self::HMAC_SIZE + self::EXPIRE_SIZE + self::IV_SIZE);
        // 超出有效期
        if (time() > hexdec(bin2hex($expire))) {
            return false;
        }
        // 验证密文是否被篡改
        if (static::compareString(static::hmac($iv, $value, $key), bin2hex($hmac)) === false) {
            return false;
        }
        // 解密数据
        $value = openssl_decrypt($value, self::CIPHER_MODE, $key, OPENSSL_RAW_DATA, $iv);
        if ($value === false) {
            return false;
        }
        // 反序列化
        $value = static::unpacking($value);
        // 返回解密结果
        return $value;
    }
解密字符串

@param string $value  待加密的数据(数字, 字符串, 数组或对象等)
@param string $key    解密密钥
@param string $target 解码目标

@return string