org\transform\driver\Base64::encode PHP Method

encode() public method

Base64编码函数
public encode ( string $data, string $target = '' )
$data string 欲编码的数据
$target string 编码目标
    public function encode($data, $target = '')
    {
        // 当函数没有特别指定编码目标时, 使用类自身编码目标
        if (empty($target)) {
            $target = self::$target;
        }
        // 进行一次原始编码
        $data = base64_encode($data);
        // 根据编码目标替换字符
        switch ($target) {
            case 'url':
                $data = str_replace(['+', '/', '='], ['-', '_', ''], $data);
                break;
            case 'regex':
                $data = str_replace(['+', '/', '='], ['!', '-', ''], $data);
                break;
            case 'default':
            default:
                break;
        }
        // 返回编码结果
        return $data;
    }

Usage Example

Esempio n. 1
0
 /**
  * 加密字符串
  *
  * @param mixed  $value  待加密的数据(数字, 字符串, 数组或对象等)
  * @param string $key    加密密钥
  * @param int    $expire 加密有效期(几秒后加密失效)
  * @param string $target 编码目标
  *
  * @return string
  */
 public static function encrypt($value, $key, $expire = 0, $target = 'url')
 {
     // 随机生成初始化向量, 增加密文随机性
     $iv = static::createIV(self::IV_SIZE);
     // 序列化待加密的数据(支持数组或对象的加密)
     $value = static::packing($value);
     // 加密数据
     $value = openssl_encrypt($value, self::CIPHER_MODE, $key, OPENSSL_RAW_DATA, $iv);
     if (false === $value) {
         return false;
     }
     // 加密有效期
     $expire = $expire ? dechex(time() + $expire) : 0;
     $expire = sprintf('%08s', $expire);
     // 生成密文校验码
     $hmac = static::hmac($iv, $value, $key);
     // 组合加密结果并base64编码
     $base = new Base64();
     return $base->encode(pack('H*', $hmac . $expire) . $iv . $value, $target);
 }