code: 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;
      }
docs: 解密字符串
  
  @param string $value  待加密的数据(数字, 字符串, 数组或对象等)
  @param string $key    解密密钥
  @param string $target 解码目标
  
  @return string