Guía del usuario del SDK de cifrado DRM-X 5.0
Para personal técnico — cómo cifrar vídeos invocando la herramienta de cifrado desde la línea de comandos en su propio servidor / sitio web
Se aplica a: DRM-X 5.0 (edición internacional com / edición de China cn) · Plataformas: Windows / Linux x86_64 / macOS 11.0+
Tabla de contenidos
1Contenido del paquete SDK
Tras extraer el archivo DRM-X5.0_Encryption_SDK, el directorio contiene los siguientes archivos:
| Archivo | Descripción |
|---|---|
| drm-x5-encrypt-sdk.exe | Programa de cifrado para Windows (x64) |
| drm-x5-encrypt-sdk-linux-x86_64 | Programa de cifrado para Linux (x86_64, enlazado estáticamente — sin dependencias de bibliotecas compartidas; se ejecuta directamente en CentOS / Ubuntu, etc.) |
| drm-x5-encrypt-sdk-macos-x86_64 | Programa de cifrado para macOS (chip Intel, macOS 11.0 o posterior) |
| drm-x5-encrypt-sdk-macos-arm64 | Programa de cifrado para macOS (chip Apple Silicon serie M, macOS 11.0 o posterior) |
| cmd.txt | Ejemplos de invocación desde la línea de comandos para las tres plataformas |
| GetPackagerEncryptedParams.php | Una demostración PHP ejecutable que llama al servicio web para obtener los parámetros de cifrado (véase la sección 4.4) |
Los argumentos de la línea de comandos son idénticos en las tres plataformas — solo difiere el nombre del archivo del programa.
2Descripción general del flujo de trabajo de cifrado
PASO 1 · Obtener los parámetros de cifrado
Llame a GetPackagerEncryptedParams para obtener ProfileEncryptedParam (es decir, la cadena cifrada de -profile — recupérela una vez y guárdela en caché para reutilizarla). Los valores Base64 de las rutas de entrada / salida los codifica localmente su programa; no es necesario llamar al servicio web para ellos.
PASO 2 · Ensamblar la línea de comandos
Introduzca el -profile obtenido y las rutas codificadas localmente en Base64 en los cuatro argumentos del programa de cifrado: -server_domain / -profile / -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded
PASO 3 · Ejecutar el cifrado
Ejecute el programa de línea de comandos en su servidor para realizar el cifrado.
PASO 4 · Publicar los archivos cifrados
Suba / publique los archivos cifrados desde el directorio de salida. Las licencias las emite el servidor DRM-X 5.0 cuando los usuarios reproducen el contenido.
¿Por qué llamar primero al servicio web de DRM-X 5.0?El argumento -profile del programa de cifrado no es el ID numérico del perfil de licencia — es una cadena cifrada vinculada a su cuenta (ProfileEncryptedParam). Esta cadena no se puede generar localmente; solo se puede obtener a través del servicio web. Se asigna uno a uno a un ProfileID, y una vez obtenida se puede guardar en caché y reutilizar — no necesita llamar al servicio web por cada archivo. Los valores Base64 de las rutas de entrada / salida, en cambio, deben codificarse localmente en su programa (véase la sección 6) — no se necesita ninguna llamada al servicio web para ellos.
3Requisitos previos
3.1 Información de la cuenta DRM-X 5.0 (obtenida de la consola de administración de DRM-X)
| Elemento | Propósito |
|---|---|
| AdminEmail | Dirección de correo electrónico del administrador, utilizada para la autenticación del servicio web. Requiere una cuenta Advanced o superior. |
| WebServiceAuthStr | Cadena de autenticación de integración del servicio web. Vékála en la consola de administración en "Website Integration Parameter Settings". |
| ProfileID | ID numérico del perfil de licencia — especifica qué perfil de licencia se utiliza para este cifrado. |
3.2 Requisitos del entorno del servidor
| Plataforma | Requisitos |
|---|---|
| Windows | Windows 7 / Server 2008 R2 o posterior (x64) |
| Linux | Arquitectura x86_64 (CentOS 7+ / Ubuntu 16.04+ y otras distribuciones principales). Enlazado estáticamente — no hay dependencias que instalar. |
| macOSmacOS | macOS 11.0 o posterior, chip Intel o Apple Silicon |
| Integración del lado del servidor (opcional) | PHP 7.4+ (con las extensiones soap y openssl habilitadas), para llamar automáticamente al servicio web |
Recordatorio de seguridad: WebServiceAuthStr equivale a una clave de cuenta. Debe almacenarse únicamente en el lado del servidor — nunca la coloque en páginas web de front-end, software de cliente ni repositorios públicos.
4Paso uno: Llamar al servicio web de DRM-X 5.0 para obtener los parámetros de cifrado
4.1 Información del servicio web
| Elemento | Valor |
|---|---|
| Punto de conexión internacional | https://5.drm-x.com/haihaisoftlicenseservice.asmx |
| Punto de conexión chino | https://5.drm-x.cn/haihaisoftlicenseservice.asmx |
| Nombre del método | GetPackagerEncryptedParams |
| Protocolo | SOAP 1.1 (POST) |
| SOAPAction | http://tempuri.org/ASPNET.StarterKit.Commerce/HaihaisoftLicenseService/GetPackagerEncryptedParams |
El punto de conexión debe coincidir con la edición de su cuenta: las cuentas internacionales usan 5.drm-x.com (línea de comandos: -server_domain com); las cuentas de China usan 5.drm-x.cn (línea de comandos: -server_domain cn). Usar la edición incorrecta provocará que la autenticación falle, o que los archivos cifrados no se puedan reproducir.
4.2 Parámetros de la solicitud
| Parámetro | Obligatorio | Descripción |
|---|---|---|
| AdminEmail | Sí | Dirección de correo electrónico del administrador de DRM-X 5.0 |
| WebServiceAuthStr | Sí | Cadena de autenticación del servicio web |
| ProfileID | Sí | ID del perfil de licencia (numérico; no requiere codificación) |
| Input | Sí | Ruta completa del archivo que se va a cifrar (cadena simple; no requiere codificación) |
| Output | Sí | Ruta completa del archivo de salida cifrado |
| ProfileEncryptedParam / enc_Input / enc_Output | No | Campos reservados — normalmente se pasa una cadena vacía |
4.3 Correspondencia entre los campos de respuesta y los argumentos de la línea de comandos (núcleo)
| Campo de respuesta | Argumento de la línea de comandos | Descripción |
|---|---|---|
| ProfileEncryptedParam | -profile | Una cadena cifrada de perfil de licencia vinculada a su cuenta (Base64 segura para URL, que contiene - y _). Debe usar el valor devuelto por el servicio web — nunca pase el ID numérico del perfil y nunca lo codifique usted mismo. Solo es necesario recuperarla una vez por ProfileID y luego se puede guardar en caché y reutilizar a largo plazo — no es necesario llamar al servicio web por cada archivo. |
| enc_Input | -input_file_utf8_base64_encoded | La ruta de entrada codificada en Base64 UTF-8. Se recomienda codificarla localmente en su programa (PHP: base64_encode(); en otros lenguajes, convierta primero a bytes UTF-8 y luego a Base64 — véase la sección 6). No se necesita ninguna llamada al servicio web para esto; el valor enc_Input devuelto por el servicio funciona igual de bien. |
| enc_Output | -output_file_utf8_base64_encoded | La ruta de salida codificada en Base64 UTF-8. Se recomienda codificarla localmente (mismo método que arriba); el valor enc_Output devuelto por el servicio también funciona. |
| GetPackagerEncryptedParamsResult | — | Texto de estado / mensaje. Nota: |
4.4 Ejemplo de invocación (PHP / SoapClient)
Este servicio web es un servicio estándar SOAP 1.1 que se puede llamar desde cualquier lenguaje, de la misma manera uniforme: envíe por POST un sobre SOAP al punto de conexión indicado en 4.1 (o haga que un cliente SOAP lo genere automáticamente a partir de ?WSDL), pase los parámetros de 4.2 y luego lea los tres campos de 4.3 en la respuesta. Bibliotecas de cliente SOAP comunes por lenguaje:
| Lenguaje / Plataforma | Clientes SOAP comunes |
|---|---|
| PHP | Clase SoapClient integrada (utilizada en esta guía, modo WSDL) |
| Java | JAX-WS (wsimport), Apache Axis2, Apache CXF |
| Python | zeep、suds |
| C# / .NET | Visual Studio "Add Service Reference", o SvcUtil |
| Node.js | Paquete soap |
El siguiente ejemplo utiliza SoapClient de PHP para demostrar la llamada completa. Guarde el código como get_params.php en su servidor y ejecútelo (PHP 7.4+ con la extensión soap habilitada) — imprime los tres valores de los argumentos de la línea de comandos:
Notas sobre SoapClient:
- La extensión php-soap debe estar instalada y habilitada (en Windows, descomente extension=soap en php.ini; en Linux, instale el paquete php-soap).
- Los errores de negocio, como una autenticación fallida, NO lanzan una SoapFault. El servicio sigue devolviendo HTTP 200 con una respuesta bien formada, y el texto del error está en GetPackagerEncryptedParamsResult. Determine siempre el éxito comprobando los valores de los campos como se describe en 4.3.
- Para depurar, use var_dump($client->__getLastRequest()); para inspeccionar el sobre de la solicitud real.
5Paso dos: Ejecutar el comando de cifrado
5.1 Primer uso (Linux / macOS)
En una terminal, cambie al directorio del programa y conceda primero el permiso de ejecución:
5.2 Plantillas de comando de cifrado de un solo archivo
Windows (cmd / PowerShell):
Linux:
macOS:
5.3 Referencia de argumentos
| Argumento | Descripción |
|---|---|
| -server_domain | Edición del servidor DRM-X 5.0 de destino: com = Internacional, cn = China. Debe coincidir con la plataforma de su cuenta y con el punto de conexión del servicio web utilizado en el paso 4. |
| -profile | La cadena cifrada del perfil de licencia — el valor completo de ProfileEncryptedParam devuelto por el servicio web (Base64 segura para URL, que contiene - y _). No pase un ID numérico, no la codifique usted mismo en Base64 y no añada ni elimine caracteres finales. Solo es necesario recuperarla una vez por ProfileID y luego se puede guardar en caché y reutilizar a largo plazo. |
| -input_file_utf8_base64_encoded | La ruta del archivo de entrada codificada en Base64 UTF-8. Se recomienda codificarla localmente (por ejemplo, base64_encode($path) de PHP, véase la sección 6); el valor enc_Input devuelto por el servicio también funciona. Se admiten tanto rutas absolutas como relativas, y las rutas pueden contener caracteres no ASCII y espacios. |
| -output_file_utf8_base64_encoded | La ruta del archivo de salida codificada en Base64 UTF-8. Se recomienda codificarla localmente (mismo método que arriba); el valor enc_Output devuelto por el servicio también funciona. El directorio padre de la salida debe existir ya — el programa no lo crea. |
5.4 Ejemplos completos
Windows:
Aquí RDpcSmFzb25c... se decodifica a D:\Jason\input\01-testVideo.mp4.
Linux:
Esto cifra ./input/01-linux-encrypt-video.mp4 → ./output/01-linux-encrypt-video2_P.mp4.
5.5 Verificar el resultado
- Cuando el programa termine, compruebe que se haya creado un archivo cifrado en el directorio de salida (se recomienda un sufijo _P para distinguirlo, por ejemplo course01_P.mp4);
- El cifrado requiere acceso de red al servidor DRM-X. Asegúrese de que su cortafuegos / grupo de seguridad permita el acceso saliente a 5.drm-x.com o 5.drm-x.cn;
- Se recomienda verificar el flujo de trabajo completo con un vídeo de prueba pequeño antes de cifrar contenido de producción en lote.
6Codificación Base64 de las rutas de entrada / salida (se recomienda la codificación local)
Práctica recomendada: genere los valores de -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded codificándolos en su propio programa — no es necesario llamar al servicio web una vez por archivo. La regla de codificación: convierta primero la cadena de ruta a bytes UTF-8 y luego aplique la codificación Base64 estándar. Nota: sus archivos de origen deben guardarse como UTF-8 (esto es importante especialmente para rutas no ASCII; en Windows, no use codificación ANSI / GBK). Ejemplos por lenguaje:
| Lenguaje / entorno | Ejemplo (codificación de la ruta /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 reiterar: no hay forma de generar el argumento -profile localmente. Es una cadena cifrada vinculada a su cuenta y solo se puede obtener a través del servicio web GetPackagerEncryptedParams.
7Ejemplos de automatización del lado del servidor
Encadenar "obtener parámetros + invocar el programa de cifrado" permite el cifrado con un solo clic desde el back office de su sitio web, o el cifrado por lotes programado. El siguiente ejemplo PHP invoca el programa de cifrado de Linux (continuando desde el código de la sección 4.4; en tiempo de ejecución, $profile debe leerse primero de la caché, y el servicio web de 4.4 debe llamarse solo cuando no exista un valor en caché):
Ejemplo de script de shell de cifrado por lotes (Linux — codifica las rutas localmente y luego cifra cada archivo):
Práctica recomendada: obtenga el ProfileEncryptedParam para un ProfileID dado una vez a través del servicio web y guárdelo en caché para reutilizarlo — no llame al servicio web una vez por cada archivo cifrado. Genere los equivalentes de enc_Input / enc_Output directamente codificando en Base64 (UTF-8) las rutas en su servidor (en PHP: base64_encode($path), véase la sección 6) — no se necesita llamada al servicio web. Al cifrar por lotes, limite la concurrencia (por ejemplo, 2-4 procesos de cifrado por servidor) para evitar saturar el ancho de banda y la CPU.
8Preguntas frecuentes (FAQ)
Q1: El servicio web devuelve "Your XML web service login info is not correct..."
AdminEmail o WebServiceAuthStr son incorrectos. Verifique ambos en la consola de administración de DRM-X; asegúrese de que los valores no tengan espacios iniciales ni finales. Tenga en cuenta también que, incluso para este error, el código de estado HTTP sigue siendo 200 — su programa debe determinar el éxito inspeccionando los campos de respuesta, no el código de estado HTTP.
Q2: Pasar el ID numérico (por ejemplo, 1001) directamente a -profile provoca un error
-profile debe ser la cadena cifrada completa de ProfileEncryptedParam devuelta por el servicio web — no el ID numérico del perfil. El ID numérico solo se utiliza al llamar al servicio web.
Q3: ¿La ruta contiene caracteres no ASCII o espacios y el cifrado falla?
Las rutas se transportan como Base64, y los caracteres no ASCII y los espacios son totalmente compatibles. La clave es que la codificación debe usar UTF-8: en Windows, el Bloc de notas / cmd pueden usar por defecto la codificación ANSI (GBK), que corrompe la ruta tras la decodificación Base64. Codifique las rutas como UTF-8 en su programa como se describe en la sección 6 (con un archivo de origen PHP guardado como UTF-8, base64_encode() simple funciona directamente; las cadenas heredadas codificadas en GBK se pueden convertir primero con iconv('GBK', 'UTF-8', $path) o mb_convert_encoding() antes de codificarlas).
Q4: El programa informa de un fallo de salida / no encuentra el directorio de salida
El directorio padre del archivo de salida debe crearse con antelación (por ejemplo, mkdir -p ./output). Verifique también que el usuario que ejecuta el programa tenga permiso de escritura en ese directorio.
Q5: macOS dice que el programa "cannot be opened because the developer cannot be verified"
El programa no está notarizado por Apple, por lo que Gatekeeper bloquea el primer inicio. Elija cualquiera de las dos soluciones: ① Ejecute xattr -d com.apple.quarantine ./drm-x5-encrypt-sdk-macos-arm64 en una terminal para eliminar la marca de cuarentena; ② O haga clic en "Abrir de todos modos" en Ajustes del Sistema → Privacidad y seguridad.
Q6: En Linux el programa no se puede ejecutar (Permission denied o error de formato)
Ejecute primero chmod +x drm-x5-encrypt-sdk-linux-x86_64. Si obtiene "cannot execute binary file", confirme que el servidor es x86_64 (uname -m). El paquete actual solo incluye compilaciones x86_64; para servidores ARM, póngase en contacto con Haihaisoft.
Q7: ¿Debo usar com o cn? ¿Qué ocurre si elijo el incorrecto?
Debe coincidir con la plataforma de su cuenta DRM-X: las cuentas internacionales usan com (y llaman a 5.drm-x.com), las cuentas de China usan cn (y llaman a 5.drm-x.cn). Una falta de coincidencia provoca un fallo de autenticación, o parámetros de cifrado que no coinciden con la plataforma.
Q8: ¿Cómo verifico los archivos cifrados?
Abra los archivos de salida en el reproductor de demostración DRM-X 5.0 / su reproductor integrado y confirme: la reproducción se bloquea sin licencia y se reproduce con normalidad tras autorizar a un usuario de prueba en la consola de administración. Verifique a pequeña escala antes del cifrado de producción en masa.
9Notas y mejores prácticas
- Conserve los archivos originales: escriba la salida en una nueva ubicación o con un nuevo nombre de archivo (por ejemplo, con un sufijo _P) para que los vídeos originales nunca se sobrescriban.
- Pequeño antes que grande: cuando utilice un nuevo perfil o un nuevo servidor por primera vez, ejecute un vídeo de prueba corto por todo el flujo "obtener parámetros → cifrar → reproducción con licencia" antes del procesamiento por lotes.
- Nunca edite los argumentos a mano: -profile es una cadena cifrada en Base64 — cópiela en su totalidad (sin espacios iniciales/finales adicionales, sin truncamiento por salto de línea).
- Mantenga en secreto la cadena de autenticación: WebServiceAuthStr pertenece únicamente a la configuración del lado del servidor; no despliegue herramientas web de demostración como GetPackagerEncryptedParams.php en internet público.
- Requisito de red: durante el cifrado, el servidor debe poder alcanzar los servidores DRM-X (Internacional 5.drm-x.com / China 5.drm-x.cn); permita el puerto de salida 443 si hay un cortafuegos.
Otros tutoriales de DRM-X 5.0
Video de introducción a DRM-X 5.0DRM-X 5.0 es una nueva generación de plataforma de software de encriptación. Haihaisoft proporciona tutoriales de demostración en video comunes de DRM-X 5.0, incluyendo introducción a DRM-X 5.0, tutorial de encriptación de video, tutorial de encriptación de páginas web y cómo incrustar reproductor de video HTML5.
VER AHORA
Cómo proteger videos con DRM-X 5.0 ZJGet para WindowsEste video demostrará cómo encriptar archivos en Windows usando el navegador ZJGet.
VER AHORA
Cómo proteger videos con DRM-X 5.0 ZJGet para macOSEste video demostrará cómo encriptar archivos en macOS usando el navegador ZJGet.
VER AHORA
Primeros pasos con DRM-X 5.0 ZJGet para WindowsEste video le mostrará cómo descargar, instalar y abrir archivos cifrados en Windows usando el navegador ZJGet.
VER AHORA
Guía de usuario de DRM-X 5.0 ZJGetGuía del usuario del navegador ZJGet. Este tutorial le ayudará a dominar fácilmente las funciones principales y los consejos prácticos del navegador ZJGet.
VER AHORA
Preguntas frecuentes de DRM-X 5.0 ZJGetPreguntas frecuentes (FAQ) sobre el uso del navegador ZJGet. Esta sección recopila las preguntas y respuestas más útiles para ayudarle a superar cualquier obstáculo que pueda encontrar.
VER AHORA¿Preguntas?
Nuestros representantes tienen respuestas.
Pregunte sobre los productos, precios, implementación o cualquier otra cosa de Haihaisoft: nuestros representantes altamente capacitados están disponibles, listos para ayudar.
Tel: +64 27 507 9959 (Nueva Zelanda)
QQ: 1279126286 / 994184623
Contáctanos en Equipos de Microsoft
servicio#haihaisoft.com (reemplace # por @)
Contáctenos