'HS256', 'typ' => 'JWT' ); $payload = array( "Type" => "CosCiToken", "AppId" => "1250000000", "BucketId" => $bucket, "Object" => "exampleobject", "Issuer" => "client", "IssuedTimeStamp" => time(), "ExpireTimeStamp" => time() + 3600 * 6, "UsageLimit" => 3, "ProtectScheme" => "rsa1024", "PublicKey" => base64_encode($publicKey), "ProtectContentKey" => 1, ); $base64header = base64UrlEncode(json_encode($header, JSON_UNESCAPED_UNICODE)); $base64payload = base64UrlEncode(json_encode($payload, JSON_UNESCAPED_UNICODE)); $token = $base64header . '.' . $base64payload . '.' . base64UrlEncode(hash_hmac('sha256', $base64header . '.' . $base64payload, $playKey, true)); echo $token; function base64UrlEncode($input) { return str_replace('=', '', strtr(base64_encode($input), '+/', '-_')); }