Guia do Usuário do SDK de Criptografia DRM-X 5.0
Para a equipe técnica — como criptografar vídeos invocando a ferramenta de criptografia a partir da linha de comando em seu próprio servidor / site
Aplica-se a: DRM-X 5.0 (edição internacional com / edição China cn) · Plataformas: Windows / Linux x86_64 / macOS 11.0+
Índice
1Conteúdo do Pacote SDK
Após extrair o arquivo DRM-X5.0_Encryption_SDK, o diretório contém os seguintes arquivos:
| Arquivo | Descrição |
|---|---|
| drm-x5-encrypt-sdk.exe | Programa de criptografia para Windows (x64) |
| drm-x5-encrypt-sdk-linux-x86_64 | Programa de criptografia para Linux (x86_64, vinculado estaticamente — sem dependências de bibliotecas compartilhadas; é executado diretamente no CentOS / Ubuntu, etc.) |
| drm-x5-encrypt-sdk-macos-x86_64 | Programa de criptografia para macOS (chip Intel, macOS 11.0 ou posterior) |
| drm-x5-encrypt-sdk-macos-arm64 | Programa de criptografia para macOS (chip Apple Silicon série M, macOS 11.0 ou posterior) |
| cmd.txt | Exemplos de invocação pela linha de comando para as três plataformas |
| GetPackagerEncryptedParams.php | Uma demonstração PHP executável que chama o Serviço Web para obter os parâmetros de criptografia (ver Seção 4.4) |
Os argumentos da linha de comando são idênticos nas três plataformas — apenas o nome do arquivo do programa difere.
2Visão Geral do Fluxo de Trabalho de Criptografia
ETAPA 1 · Obter os parâmetros de criptografia
Chame GetPackagerEncryptedParams para obter ProfileEncryptedParam (ou seja, a string criptografada -profile — obtenha-a uma vez e coloque-a em cache para reutilização). Os valores Base64 dos caminhos de entrada / saída são codificados localmente pelo seu programa; não é necessário chamar o Serviço Web para eles.
ETAPA 2 · Montar a linha de comando
Preencha o -profile obtido e os caminhos codificados localmente em Base64 nos quatro argumentos do programa de criptografia: -server_domain / -profile / -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded
ETAPA 3 · Executar a criptografia
Execute o programa de linha de comando no seu servidor para realizar a criptografia.
ETAPA 4 · Publicar os arquivos criptografados
Faça upload / publique os arquivos criptografados do diretório de saída. As licenças são emitidas pelo servidor DRM-X 5.0 quando os usuários reproduzem o conteúdo.
Por que chamar primeiro o Serviço Web DRM-X 5.0?O argumento -profile do programa de criptografia não é o ID numérico do perfil de licença — é uma string criptografada vinculada à sua conta (ProfileEncryptedParam). Essa string não pode ser gerada localmente; só pode ser obtida através do Serviço Web. Ela mapeia um para um para um ProfileID, e uma vez obtida, pode ser armazenada em cache e reutilizada — você não precisa chamar o Serviço Web para cada arquivo. Os valores Base64 dos caminhos de entrada / saída, por outro lado, devem ser codificados localmente no seu programa (ver Seção 6) — nenhuma chamada ao Serviço Web é necessária para eles.
3Pré-requisitos
3.1 Informações da Conta DRM-X 5.0 (obtidas no console de administração DRM-X)
| Item | Finalidade |
|---|---|
| AdminEmail | Endereço de e-mail do administrador, usado para autenticação no Serviço Web. Requer uma conta Advanced ou superior. |
| WebServiceAuthStr | String de autenticação de integração do Serviço Web. Visualize-a no console de administração em "Website Integration Parameter Settings". |
| ProfileID | ID numérico do perfil de licença — especifica qual perfil de licença é usado para esta criptografia. |
3.2 Requisitos do Ambiente do Servidor
| Plataforma | Requisitos |
|---|---|
| Windows | Windows 7 / Server 2008 R2 ou posterior (x64) |
| Linux | Arquitetura x86_64 (CentOS 7+ / Ubuntu 16.04+ e outras distribuições principais). Vinculado estaticamente — sem dependências para instalar. |
| macOSmacOS | macOS 11.0 ou posterior, chip Intel ou Apple Silicon |
| Integração no lado do servidor (opcional) | PHP 7.4+ (com as extensões soap e openssl habilitadas), para chamar automaticamente o Serviço Web |
Lembrete de segurança: WebServiceAuthStr equivale a uma chave de conta. Deve ser armazenado apenas no lado do servidor — nunca o coloque em páginas web de front-end, software cliente ou repositórios públicos.
4Etapa Um: Chamar o Serviço Web DRM-X 5.0 para Obter os Parâmetros de Criptografia
4.1 Informações do Serviço Web
| Item | Valor |
|---|---|
| Endpoint internacional | https://5.drm-x.com/haihaisoftlicenseservice.asmx |
| Endpoint chinês | https://5.drm-x.cn/haihaisoftlicenseservice.asmx |
| Nome do método | GetPackagerEncryptedParams |
| Protocolo | SOAP 1.1 (POST) |
| SOAPAction | http://tempuri.org/ASPNET.StarterKit.Commerce/HaihaisoftLicenseService/GetPackagerEncryptedParams |
O endpoint deve corresponder à edição da sua conta: contas internacionais usam 5.drm-x.com (linha de comando: -server_domain com); contas da China usam 5.drm-x.cn (linha de comando: -server_domain cn). Usar a edição errada fará com que a autenticação falhe, ou os arquivos criptografados não possam ser reproduzidos.
4.2 Parâmetros da Solicitação
| Parâmetro | Obrigatório | Descrição |
|---|---|---|
| AdminEmail | Sim | Endereço de e-mail do administrador DRM-X 5.0 |
| WebServiceAuthStr | Sim | String de autenticação do Serviço Web |
| ProfileID | Sim | ID do perfil de licença (numérico; nenhuma codificação necessária) |
| Input | Sim | Caminho completo do arquivo a ser criptografado (string simples; nenhuma codificação necessária) |
| Output | Sim | Caminho completo do arquivo de saída criptografado |
| ProfileEncryptedParam / enc_Input / enc_Output | Não | Campos reservados — normalmente passe uma string vazia |
4.3 Mapeamento entre os Campos de Resposta e os Argumentos da Linha de Comando (Núcleo)
| Campo de resposta | Argumento da linha de comando | Descrição |
|---|---|---|
| ProfileEncryptedParam | -profile | Uma string criptografada de perfil de licença vinculada à sua conta (Base64 segura para URL, contendo - e _). Você deve usar o valor retornado pelo Serviço Web — nunca passe o ID numérico do Perfil e nunca o codifique você mesmo. Ela só precisa ser obtida uma vez por ProfileID e depois pode ser armazenada em cache e reutilizada a longo prazo — não é necessário chamar o Serviço Web para cada arquivo. |
| enc_Input | -input_file_utf8_base64_encoded | O caminho de entrada codificado em Base64 UTF-8. Recomenda-se codificá-lo localmente no seu programa (PHP: base64_encode(); em outras linguagens, converta primeiro para bytes UTF-8, depois para Base64 — ver Seção 6). Nenhuma chamada ao Serviço Web é necessária para isso; o valor enc_Input retornado pelo serviço funciona igualmente bem. |
| enc_Output | -output_file_utf8_base64_encoded | O caminho de saída codificado em Base64 UTF-8. Recomenda-se codificá-lo localmente (mesmo método acima); o valor enc_Output retornado pelo serviço também funciona. |
| GetPackagerEncryptedParamsResult | — | Texto de status / mensagem. Observação: |
4.4 Exemplo de Invocação (PHP / SoapClient)
Este Serviço Web é um serviço padrão SOAP 1.1 que pode ser chamado de qualquer linguagem, da mesma forma uniforme: envie um envelope SOAP por POST para o endpoint listado em 4.1 (ou faça um cliente SOAP gerá-lo automaticamente a partir de ?WSDL), passe os parâmetros de 4.2 e depois leia os três campos de 4.3 na resposta. Bibliotecas de cliente SOAP comuns por linguagem:
| Linguagem / Plataforma | Clientes SOAP comuns |
|---|---|
| PHP | Classe SoapClient integrada (usada neste guia, modo WSDL) |
| Java | JAX-WS (wsimport), Apache Axis2, Apache CXF |
| Python | zeep、suds |
| C# / .NET | Visual Studio "Add Service Reference", ou SvcUtil |
| Node.js | Pacote soap |
O exemplo a seguir usa o SoapClient do PHP para demonstrar a chamada completa. Salve o código como get_params.php no seu servidor e execute-o (PHP 7.4+ com a extensão soap habilitada) — ele imprime os três valores dos argumentos da linha de comando:
Notas sobre o SoapClient:
- A extensão php-soap deve estar instalada e habilitada (no Windows, descomente extension=soap no php.ini; no Linux, instale o pacote php-soap).
- Erros de negócio, como autenticação falhada, NÃO lançam um SoapFault. O serviço ainda retorna HTTP 200 com uma resposta bem formada, e o texto do erro está em GetPackagerEncryptedParamsResult. Sempre determine o sucesso verificando os valores dos campos conforme descrito em 4.3.
- Para depuração, use var_dump($client->__getLastRequest()); para inspecionar o envelope da solicitação real.
5Etapa Dois: Executar o Comando de Criptografia
5.1 Primeiro Uso (Linux / macOS)
Em um terminal, entre no diretório do programa e conceda primeiro a permissão de execução:
5.2 Modelos de Comando de Criptografia de Arquivo Único
Windows (cmd / PowerShell):
Linux:
macOS:
5.3 Referência de Argumentos
| Argumento | Descrição |
|---|---|
| -server_domain | Edição do servidor DRM-X 5.0 de destino: com = Internacional, cn = China. Deve corresponder à plataforma da sua conta e ao endpoint do Serviço Web usado na Etapa 4. |
| -profile | A string criptografada do perfil de licença — o valor completo de ProfileEncryptedParam retornado pelo Serviço Web (Base64 segura para URL, contendo - e _). Não passe um ID numérico, não a codifique em Base64 você mesmo e não adicione ou remova caracteres finais. Ela só precisa ser obtida uma vez por ProfileID e depois pode ser armazenada em cache e reutilizada a longo prazo. |
| -input_file_utf8_base64_encoded | O caminho do arquivo de entrada codificado em Base64 UTF-8. Recomenda-se codificá-lo localmente (por exemplo, base64_encode($path) do PHP, ver Seção 6); o valor enc_Input retornado pelo serviço também funciona. Caminhos absolutos e relativos são suportados, e os caminhos podem conter caracteres não ASCII e espaços. |
| -output_file_utf8_base64_encoded | O caminho do arquivo de saída codificado em Base64 UTF-8. Recomenda-se codificá-lo localmente (mesmo método acima); o valor enc_Output retornado pelo serviço também funciona. O diretório pai da saída deve já existir — o programa não o cria. |
5.4 Exemplos Completos
Windows:
Aqui RDpcSmFzb25c... é decodificado para D:\Jason\input\01-testVideo.mp4.
Linux:
Isso criptografa ./input/01-linux-encrypt-video.mp4 → ./output/01-linux-encrypt-video2_P.mp4.
5.5 Verificando o Resultado
- Quando o programa terminar, verifique se um arquivo criptografado foi criado no diretório de saída (recomenda-se um sufixo _P para distingui-lo, por exemplo course01_P.mp4);
- A criptografia requer acesso de rede ao servidor DRM-X. Certifique-se de que seu firewall / grupo de segurança permita acesso de saída para 5.drm-x.com ou 5.drm-x.cn;
- Recomenda-se verificar o fluxo de trabalho completo com um vídeo de teste pequeno antes de criptografar conteúdo de produção em lote.
6Codificação Base64 dos Caminhos de Entrada / Saída (Codificação Local Recomendada)
Prática recomendada: gere os valores de -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded codificando-os em seu próprio programa — não é necessário chamar o Serviço Web uma vez por arquivo. A regra de codificação: primeiro converta a string do caminho em bytes UTF-8, depois aplique a codificação Base64 padrão. Observação: seus arquivos de origem devem ser salvos como UTF-8 (isso é especialmente importante para caminhos não ASCII; no Windows, não use codificação ANSI / GBK). Exemplos por linguagem:
| Linguagem / ambiente | Exemplo (codificando o caminho /home/video/course01.mp4) |
|---|---|
| PHP | base64_encode('/home/video/course01.mp4') |
| Java | Base64.getEncoder().encodeToString(path.getBytes(StandardCharsets.UTF_8)) |
| Python | base64.b64encode(path.encode('utf-8')).decode() |
| C# / .NET | Convert.ToBase64String(Encoding.UTF8.GetBytes(path)) |
| Node.js | Buffer.from(path, 'utf8').toString('base64') |
| Linux / macOS shell | printf '%s' "/home/video/course01.mp4" | base64 |
| Windows PowerShell | [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("C:\video\course01.mp4")) |
Para reenfatizar: não há como gerar o argumento -profile localmente. É uma string criptografada vinculada à sua conta e só pode ser obtida através do Serviço Web GetPackagerEncryptedParams.
7Exemplos de Automação no Lado do Servidor
Encadear "obter parâmetros + invocar o programa de criptografia" permite criptografia com um clique a partir do back office do seu site, ou criptografia em lote agendada. O exemplo PHP a seguir invoca o programa de criptografia do Linux (continuando a partir do código na Seção 4.4; em tempo de execução, $profile deve ser lido primeiro do cache, e o Serviço Web em 4.4 chamado apenas quando não existir um valor em cache):
Exemplo de script shell de criptografia em lote (Linux — codifica os caminhos localmente e depois criptografa cada arquivo):
Prática recomendada: obtenha o ProfileEncryptedParam para um determinado ProfileID uma vez através do Serviço Web e armazene-o em cache para reutilização — não chame o Serviço Web uma vez por arquivo criptografado. Gere os equivalentes de enc_Input / enc_Output diretamente codificando em Base64 (UTF-8) os caminhos no seu servidor (em PHP: base64_encode($path), ver Seção 6) — nenhuma chamada ao Serviço Web é necessária. Ao criptografar em lote, limite a concorrência (por exemplo, 2-4 processos de criptografia por servidor) para evitar saturar a largura de banda e a CPU.
8Perguntas Frequentes (FAQ)
Q1: O Serviço Web retorna "Your XML web service login info is not correct..."
AdminEmail ou WebServiceAuthStr está incorreto. Verifique ambos no console de administração DRM-X; certifique-se de que os valores não tenham espaços no início ou no fim. Observe também que, mesmo para esse erro, o código de status HTTP ainda é 200 — seu programa deve determinar o sucesso inspecionando os campos de resposta, e não o código de status HTTP.
Q2: Passar o ID numérico (por exemplo, 1001) diretamente para -profile causa um erro
-profile deve ser a string criptografada completa de ProfileEncryptedParam retornada pelo Serviço Web — não o ID numérico do Perfil. O ID numérico é usado apenas ao chamar o Serviço Web.
Q3: O caminho contém caracteres não ASCII ou espaços e a criptografia falha?
Os caminhos são transportados como Base64, e caracteres não ASCII e espaços são totalmente suportados. O ponto-chave é que a codificação deve usar UTF-8: no Windows, o Bloco de Notas / cmd podem usar por padrão a codificação ANSI (GBK), o que corrompe o caminho após a decodificação Base64. Codifique os caminhos como UTF-8 no seu programa conforme descrito na Seção 6 (com um arquivo de origem PHP salvo como UTF-8, o base64_encode() simples funciona diretamente; strings legadas codificadas em GBK podem ser convertidas primeiro com iconv('GBK', 'UTF-8', $path) ou mb_convert_encoding() antes da codificação).
Q4: O programa relata uma falha de saída / não consegue encontrar o diretório de saída
O diretório pai do arquivo de saída deve ser criado com antecedência (por exemplo, mkdir -p ./output). Verifique também se o usuário que executa o programa tem permissão de escrita nesse diretório.
Q5: O macOS diz que o programa "cannot be opened because the developer cannot be verified"
O programa não é notarizado pela Apple, então o Gatekeeper bloqueia a primeira inicialização. Escolha qualquer uma das soluções: ① Execute xattr -d com.apple.quarantine ./drm-x5-encrypt-sdk-macos-arm64 em um terminal para remover o sinalizador de quarentena; ② Ou clique em "Abrir Mesmo Assim" em Ajustes do Sistema → Privacidade e Segurança.
Q6: No Linux o programa não pode ser executado (Permission denied ou erro de formato)
Execute primeiro chmod +x drm-x5-encrypt-sdk-linux-x86_64. Se você receber "cannot execute binary file", confirme que o servidor é x86_64 (uname -m). O pacote atual fornece apenas builds x86_64; para servidores ARM, entre em contato com a Haihaisoft.
Q7: Devo usar com ou cn? O que acontece se eu escolher o errado?
Deve corresponder à plataforma da sua conta DRM-X: contas internacionais usam com (e chamam 5.drm-x.com), contas da China usam cn (e chamam 5.drm-x.cn). Uma incompatibilidade causa falha de autenticação, ou parâmetros de criptografia que não correspondem à plataforma.
Q8: Como verifico os arquivos criptografados?
Abra os arquivos de saída no player de demonstração DRM-X 5.0 / no seu player integrado e confirme: a reprodução é bloqueada sem uma licença e funciona normalmente após autorizar um usuário de teste no console de administração. Verifique em pequena escala antes da criptografia de produção em massa.
9Notas e Melhores Práticas
- Mantenha os arquivos originais: escreva a saída em um novo local ou com um novo nome de arquivo (por exemplo, com um sufixo _P) para que os vídeos originais nunca sejam sobrescritos.
- Pequeno antes de grande: ao usar um novo perfil ou um novo servidor pela primeira vez, execute um vídeo de teste curto por todo o fluxo "obter parâmetros → criptografar → reprodução licenciada" antes do processamento em lote.
- Nunca edite os argumentos manualmente: -profile é uma string criptografada em Base64 — copie-a na íntegra (sem espaços extras no início/fim, sem truncamento por quebra de linha).
- Mantenha a string de autenticação em segredo: WebServiceAuthStr pertence apenas à configuração do lado do servidor; não implante ferramentas web de demonstração como GetPackagerEncryptedParams.php na internet pública.
- Requisito de rede: durante a criptografia, o servidor deve conseguir alcançar os servidores DRM-X (Internacional 5.drm-x.com / China 5.drm-x.cn); permita a porta de saída 443 se houver um firewall.
Outros Tutoriais DRM-X 5.0
Vídeo de introdução ao DRM-X 5.0O DRM-X 5.0 é uma nova geração de plataforma de software de criptografia. A Haihaisoft fornece tutoriais de demonstração em vídeo DRM-X 5.0 comuns, incluindo introdução ao DRM-X 5.0, tutorial de criptografia de vídeo, tutorial de criptografia de página web e como incorporar reprodutor de vídeo HTML5.
ASSISTIR AGORA
Como proteger vídeos com DRM-X 5.0 ZJGet para WindowsEste vídeo demonstra como criptografar arquivos no Windows usando o navegador ZJGet.
ASSISTIR AGORA
Como proteger vídeos com DRM-X 5.0 ZJGet para macOSEste vídeo demonstra como criptografar arquivos no macOS usando o navegador ZJGet.
ASSISTIR AGORA
Primeiros passos com DRM-X 5.0 ZJGet para WindowsEste vídeo mostrará como baixar, instalar e abrir arquivos criptografados no Windows usando o navegador ZJGet.
ASSISTIR AGORA
Guia do usuário do DRM-X 5.0 ZJGetGuia do usuário do navegador ZJGet. Este tutorial ajudará você a dominar facilmente os recursos principais e as dicas práticas do navegador ZJGet.
ASSISTIR AGORA
Perguntas Frequentes (FAQ) do DRM-X 5.0 ZJGetPerguntas frequentes (FAQ) sobre o uso do navegador ZJGet. Esta seção compila as perguntas e respostas mais úteis para ajudá-lo a superar quaisquer obstáculos que possa encontrar.
ASSISTIR AGORAQuestões?
Nossos representantes têm as respostas.
Pergunte sobre os produtos, preços, implementação ou qualquer outro assunto relacionado à Haihaisoft — nossos representantes altamente treinados estão à disposição para ajudar.
Telefone: +64 27 507 9959 (Nova Zelândia)
QQ: 1279126286 / 994184623
Entre em contato conosco em Microsoft Teams
serviço#haihaisoft.com (substitua # por @)
Contato