Guide de l'utilisateur du SDK de chiffrement DRM-X 5.0
Pour le personnel technique — comment chiffrer des vidéos en invoquant l'outil de chiffrement depuis la ligne de commande sur votre propre serveur / site web
S'applique à : DRM-X 5.0 (édition internationale com / édition Chine cn) · Plateformes : Windows / Linux x86_64 / macOS 11.0+
Table des matières
1Contenu du package SDK
Après avoir extrait l'archive DRM-X5.0_Encryption_SDK, le répertoire contient les fichiers suivants :
| Fichier | Description |
|---|---|
| drm-x5-encrypt-sdk.exe | Programme de chiffrement Windows (x64) |
| drm-x5-encrypt-sdk-linux-x86_64 | Programme de chiffrement Linux (x86_64, lié statiquement — aucune dépendance de bibliothèque partagée ; s'exécute directement sur CentOS / Ubuntu, etc.) |
| drm-x5-encrypt-sdk-macos-x86_64 | Programme de chiffrement macOS (puce Intel, macOS 11.0 ou version ultérieure) |
| drm-x5-encrypt-sdk-macos-arm64 | Programme de chiffrement macOS (puce Apple Silicon série M, macOS 11.0 ou version ultérieure) |
| cmd.txt | Exemples d'invocation en ligne de commande pour les trois plateformes |
| GetPackagerEncryptedParams.php | Une démo PHP exécutable qui appelle le service web pour obtenir les paramètres de chiffrement (voir section 4.4) |
Les arguments de ligne de commande sont identiques sur les trois plateformes — seul le nom du fichier de programme diffère.
2Aperçu du flux de travail de chiffrement
ÉTAPE 1 · Obtenir les paramètres de chiffrement
Appelez GetPackagerEncryptedParams pour obtenir ProfileEncryptedParam (c'est-à-dire la chaîne chiffrée -profile — récupérez-la une fois et mettez-la en cache pour la réutiliser). Les valeurs Base64 des chemins d'entrée / sortie sont encodées localement par votre programme ; il n'est pas nécessaire d'appeler le service web pour elles.
ÉTAPE 2 · Assembler la ligne de commande
Insérez le -profile obtenu et les chemins encodés localement en Base64 dans les quatre arguments du programme de chiffrement : -server_domain / -profile / -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded
ÉTAPE 3 · Exécuter le chiffrement
Exécutez le programme en ligne de commande sur votre serveur pour effectuer le chiffrement.
ÉTAPE 4 · Publier les fichiers chiffrés
Téléversez / publiez les fichiers chiffrés depuis le répertoire de sortie. Les licences sont délivrées par le serveur DRM-X 5.0 lorsque les utilisateurs lisent le contenu.
Pourquoi appeler d'abord le service web DRM-X 5.0 ?L'argument -profile du programme de chiffrement n'est pas l'ID numérique du profil de licence — c'est une chaîne chiffrée liée à votre compte (ProfileEncryptedParam). Cette chaîne ne peut pas être générée localement ; elle ne peut être obtenue que via le service web. Elle correspond un à un à un ProfileID, et une fois obtenue, elle peut être mise en cache et réutilisée — vous n'avez pas besoin d'appeler le service web pour chaque fichier. Les valeurs Base64 des chemins d'entrée / sortie, en revanche, doivent être encodées localement dans votre programme (voir section 6) — aucun appel au service web n'est nécessaire pour elles.
3Prérequis
3.1 Informations de compte DRM-X 5.0 (obtenues depuis la console d'administration DRM-X)
| Élément | Objectif |
|---|---|
| AdminEmail | Adresse e-mail de l'administrateur, utilisée pour l'authentification au service web. Nécessite un compte Advanced ou supérieur. |
| WebServiceAuthStr | Chaîne d'authentification d'intégration du service web. Consultez-la dans la console d'administration sous « Website Integration Parameter Settings ». |
| ProfileID | ID numérique du profil de licence — spécifie quel profil de licence est utilisé pour ce chiffrement. |
3.2 Exigences relatives à l'environnement serveur
| Plateforme | Exigences |
|---|---|
| Windows | Windows 7 / Server 2008 R2 ou version ultérieure (x64) |
| Linux | Architecture x86_64 (CentOS 7+ / Ubuntu 16.04+ et autres distributions courantes). Lié statiquement — aucune dépendance à installer. |
| macOSmacOS | macOS 11.0 ou version ultérieure, puce Intel ou Apple Silicon |
| Intégration côté serveur (facultatif) | PHP 7.4+ (avec les extensions soap et openssl activées), pour appeler automatiquement le service web |
Rappel de sécurité : WebServiceAuthStr équivaut à une clé de compte. Il doit être stocké uniquement côté serveur — ne le placez jamais dans des pages web front-end, des logiciels clients ou des dépôts publics.
4Étape un : Appeler le service web DRM-X 5.0 pour obtenir les paramètres de chiffrement
4.1 Informations sur le service web
| Élément | Valeur |
|---|---|
| Point de terminaison international | https://5.drm-x.com/haihaisoftlicenseservice.asmx |
| Point de terminaison chinois | https://5.drm-x.cn/haihaisoftlicenseservice.asmx |
| Nom de la méthode | GetPackagerEncryptedParams |
| Protocole | SOAP 1.1 (POST) |
| SOAPAction | http://tempuri.org/ASPNET.StarterKit.Commerce/HaihaisoftLicenseService/GetPackagerEncryptedParams |
Le point de terminaison doit correspondre à l'édition de votre compte : les comptes internationaux utilisent 5.drm-x.com (ligne de commande : -server_domain com) ; les comptes Chine utilisent 5.drm-x.cn (ligne de commande : -server_domain cn). Utiliser la mauvaise édition entraînera l'échec de l'authentification, ou des fichiers chiffrés illisibles.
4.2 Paramètres de requête
| Paramètre | Obligatoire | Description |
|---|---|---|
| AdminEmail | Oui | Adresse e-mail de l'administrateur DRM-X 5.0 |
| WebServiceAuthStr | Oui | Chaîne d'authentification du service web |
| ProfileID | Oui | ID du profil de licence (numérique ; aucun encodage nécessaire) |
| Input | Oui | Chemin complet du fichier à chiffrer (chaîne simple ; aucun encodage nécessaire) |
| Output | Oui | Chemin complet du fichier de sortie chiffré |
| ProfileEncryptedParam / enc_Input / enc_Output | Non | Champs réservés — passez normalement une chaîne vide |
4.3 Correspondance entre les champs de réponse et les arguments de ligne de commande (essentiel)
| Champ de réponse | Argument de ligne de commande | Description |
|---|---|---|
| ProfileEncryptedParam | -profile | Une chaîne chiffrée de profil de licence liée à votre compte (Base64 compatible URL, contenant - et _). Vous devez utiliser la valeur renvoyée par le service web — ne passez jamais l'ID numérique du profil et ne l'encodez jamais vous-même. Elle ne doit être récupérée qu'une fois par ProfileID et peut ensuite être mise en cache et réutilisée à long terme — il n'est pas nécessaire d'appeler le service web pour chaque fichier. |
| enc_Input | -input_file_utf8_base64_encoded | Le chemin d'entrée encodé en Base64 UTF-8. Il est recommandé de l'encoder localement dans votre programme (PHP : base64_encode() ; dans d'autres langages, convertissez d'abord en octets UTF-8, puis en Base64 — voir section 6). Aucun appel au service web n'est nécessaire pour cela ; la valeur enc_Input renvoyée par le service fonctionne tout aussi bien. |
| enc_Output | -output_file_utf8_base64_encoded | Le chemin de sortie encodé en Base64 UTF-8. Il est recommandé de l'encoder localement (même méthode que ci-dessus) ; la valeur enc_Output renvoyée par le service fonctionne également. |
| GetPackagerEncryptedParamsResult | — | Texte de statut / message. Remarque : |
4.4 Exemple d'invocation (PHP / SoapClient)
Ce service web est un service standard SOAP 1.1 qui peut être appelé depuis n'importe quel langage, de la même manière uniforme : envoyez une enveloppe SOAP par POST au point de terminaison indiqué en 4.1 (ou faites-la générer automatiquement par un client SOAP à partir de ?WSDL), passez les paramètres de 4.2, puis lisez les trois champs de 4.3 dans la réponse. Bibliothèques clientes SOAP courantes par langage :
| Langage / Plateforme | Clients SOAP courants |
|---|---|
| PHP | Classe SoapClient intégrée (utilisée dans ce guide, mode WSDL) |
| Java | JAX-WS (wsimport), Apache Axis2, Apache CXF |
| Python | zeep、suds |
| C# / .NET | Visual Studio « Add Service Reference », ou SvcUtil |
| Node.js | Package soap |
L'exemple suivant utilise SoapClient de PHP pour démontrer l'appel complet. Enregistrez le code sous get_params.php sur votre serveur et exécutez-le (PHP 7.4+ avec l'extension soap activée) — il affiche les trois valeurs d'arguments de ligne de commande :
Remarques sur SoapClient :
- L'extension php-soap doit être installée et activée (sous Windows, décommentez extension=soap dans php.ini ; sous Linux, installez le package php-soap).
- Les erreurs métier telles qu'une authentification échouée ne lancent PAS de SoapFault. Le service renvoie toujours HTTP 200 avec une réponse bien formée, et le texte d'erreur se trouve dans GetPackagerEncryptedParamsResult. Déterminez toujours le succès en vérifiant les valeurs des champs comme décrit en 4.3.
- Pour le débogage, utilisez var_dump($client->__getLastRequest()) ; pour inspecter l'enveloppe de requête réelle.
5Étape deux : Exécuter la commande de chiffrement
5.1 Première utilisation (Linux / macOS)
Dans un terminal, placez-vous dans le répertoire du programme et accordez d'abord la permission d'exécution :
5.2 Modèles de commande de chiffrement d'un seul fichier
Windows (cmd / PowerShell):
Linux:
macOS:
5.3 Référence des arguments
| Argument | Description |
|---|---|
| -server_domain | Édition du serveur DRM-X 5.0 cible : com = International, cn = Chine. Elle doit correspondre à la plateforme de votre compte et au point de terminaison du service web utilisé à l'étape 4. |
| -profile | La chaîne chiffrée du profil de licence — la valeur complète de ProfileEncryptedParam renvoyée par le service web (Base64 compatible URL, contenant - et _). Ne passez pas d'ID numérique, ne l'encodez pas vous-même en Base64 et n'ajoutez ni ne supprimez pas de caractères de fin. Elle ne doit être récupérée qu'une fois par ProfileID et peut ensuite être mise en cache et réutilisée à long terme. |
| -input_file_utf8_base64_encoded | Le chemin du fichier d'entrée encodé en Base64 UTF-8. Il est recommandé de l'encoder localement (par exemple base64_encode($path) de PHP, voir section 6) ; la valeur enc_Input renvoyée par le service fonctionne également. Les chemins absolus et relatifs sont pris en charge, et les chemins peuvent contenir des caractères non ASCII et des espaces. |
| -output_file_utf8_base64_encoded | Le chemin du fichier de sortie encodé en Base64 UTF-8. Il est recommandé de l'encoder localement (même méthode que ci-dessus) ; la valeur enc_Output renvoyée par le service fonctionne également. Le répertoire parent de la sortie doit déjà exister — le programme ne le crée pas. |
5.4 Exemples complets
Windows:
Ici RDpcSmFzb25c... se décode en D:\Jason\input\01-testVideo.mp4.
Linux:
Cela chiffre ./input/01-linux-encrypt-video.mp4 → ./output/01-linux-encrypt-video2_P.mp4.
5.5 Vérification du résultat
- Lorsque le programme se termine, vérifiez qu'un fichier chiffré a été créé dans le répertoire de sortie (un suffixe _P est recommandé pour le distinguer, par exemple course01_P.mp4) ;
- Le chiffrement nécessite un accès réseau au serveur DRM-X. Assurez-vous que votre pare-feu / groupe de sécurité autorise l'accès sortant à 5.drm-x.com ou 5.drm-x.cn ;
- Il est recommandé de vérifier le flux de travail complet avec une petite vidéo de test avant de chiffrer en lot le contenu de production.
6Encodage Base64 des chemins d'entrée / sortie (encodage local recommandé)
Pratique recommandée : générez les valeurs de -input_file_utf8_base64_encoded / -output_file_utf8_base64_encoded en les encodant dans votre propre programme — il n'est pas nécessaire d'appeler le service web une fois par fichier. La règle d'encodage : convertissez d'abord la chaîne de chemin en octets UTF-8, puis appliquez l'encodage Base64 standard. Remarque : vos fichiers sources doivent être enregistrés en UTF-8 (cela est particulièrement important pour les chemins non ASCII ; sous Windows, n'utilisez pas l'encodage ANSI / GBK). Exemples par langage :
| Langage / environnement | Exemple (encodage du chemin /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")) |
Pour réitérer : il n'existe aucun moyen de générer l'argument -profile localement. C'est une chaîne chiffrée liée à votre compte et elle ne peut être obtenue que via le service web GetPackagerEncryptedParams.
7Exemples d'automatisation côté serveur
Enchaîner « obtenir les paramètres + invoquer le programme de chiffrement » permet un chiffrement en un clic depuis le back-office de votre site web, ou un chiffrement par lots planifié. L'exemple PHP suivant invoque le programme de chiffrement Linux (suite du code de la section 4.4 ; à l'exécution, $profile doit d'abord être lu depuis le cache, et le service web de 4.4 ne doit être appelé que lorsqu'aucune valeur en cache n'existe) :
Exemple de script shell de chiffrement par lots (Linux — encode les chemins localement, puis chiffre chaque fichier) :
Pratique recommandée : récupérez le ProfileEncryptedParam pour un ProfileID donné une fois via le service web et mettez-le en cache pour le réutiliser — n'appelez pas le service web une fois par fichier chiffré. Générez les équivalents de enc_Input / enc_Output directement en encodant en Base64 (UTF-8) les chemins sur votre serveur (en PHP : base64_encode($path), voir section 6) — aucun appel au service web nécessaire. Lors du chiffrement par lots, limitez la concurrence (par exemple 2-4 processus de chiffrement par serveur) pour éviter de saturer la bande passante et le CPU.
8Foire aux questions (FAQ)
Q1 : Le service web renvoie « Your XML web service login info is not correct... »
AdminEmail ou WebServiceAuthStr est incorrect. Vérifiez les deux dans la console d'administration DRM-X ; assurez-vous que les valeurs n'ont pas d'espaces en début ou en fin. Notez également que même pour cette erreur, le code d'état HTTP reste 200 — votre programme doit déterminer le succès en inspectant les champs de réponse, et non le code d'état HTTP.
Q2 : Passer l'ID numérique (par exemple 1001) directement à -profile provoque une erreur
-profile doit être la chaîne chiffrée complète ProfileEncryptedParam renvoyée par le service web — pas l'ID numérique du profil. L'ID numérique n'est utilisé que lors de l'appel au service web.
Q3 : Le chemin contient des caractères non ASCII ou des espaces et le chiffrement échoue ?
Les chemins sont transportés en Base64, et les caractères non ASCII et les espaces sont entièrement pris en charge. La clé est que l'encodage doit utiliser UTF-8 : sous Windows, le Bloc-notes / cmd peuvent utiliser par défaut l'encodage ANSI (GBK), ce qui corrompt le chemin après le décodage Base64. Encodez les chemins en UTF-8 dans votre programme comme décrit à la section 6 (avec un fichier source PHP enregistré en UTF-8, un simple base64_encode() fonctionne directement ; les chaînes héritées encodées en GBK peuvent d'abord être converties avec iconv('GBK', 'UTF-8', $path) ou mb_convert_encoding() avant l'encodage).
Q4 : Le programme signale un échec de sortie / ne trouve pas le répertoire de sortie
Le répertoire parent du fichier de sortie doit être créé à l'avance (par exemple mkdir -p ./output). Vérifiez également que l'utilisateur exécutant le programme dispose de la permission d'écriture sur ce répertoire.
Q5 : macOS indique que le programme « cannot be opened because the developer cannot be verified »
Le programme n'est pas notarié par Apple, donc Gatekeeper bloque le premier lancement. Choisissez l'une ou l'autre des solutions : ① Exécutez xattr -d com.apple.quarantine ./drm-x5-encrypt-sdk-macos-arm64 dans un terminal pour supprimer l'indicateur de quarantaine ; ② Ou cliquez sur « Ouvrir quand même » dans Réglages Système → Confidentialité et sécurité.
Q6 : Sous Linux, le programme ne peut pas s'exécuter (Permission denied ou erreur de format)
Exécutez d'abord chmod +x drm-x5-encrypt-sdk-linux-x86_64. Si vous obtenez « cannot execute binary file », confirmez que le serveur est x86_64 (uname -m). Le package actuel ne fournit que des builds x86_64 ; pour les serveurs ARM, veuillez contacter Haihaisoft.
Q7 : Dois-je utiliser com ou cn ? Que se passe-t-il si je choisis le mauvais ?
Cela doit correspondre à la plateforme de votre compte DRM-X : les comptes internationaux utilisent com (et appellent 5.drm-x.com), les comptes Chine utilisent cn (et appellent 5.drm-x.cn). Une inadéquation provoque un échec d'authentification, ou des paramètres de chiffrement qui ne correspondent pas à la plateforme.
Q8 : Comment vérifier les fichiers chiffrés ?
Ouvrez les fichiers de sortie dans le lecteur de démonstration DRM-X 5.0 / votre lecteur intégré et confirmez : la lecture est bloquée sans licence, et fonctionne normalement après avoir autorisé un utilisateur test dans la console d'administration. Vérifiez à petite échelle avant le chiffrement de production en masse.
9Remarques et bonnes pratiques
- Conservez les fichiers originaux : écrivez la sortie dans un nouvel emplacement ou avec un nouveau nom de fichier (par exemple avec un suffixe _P) afin que les vidéos originales ne soient jamais écrasées.
- Petit avant grand : lorsque vous utilisez un nouveau profil ou un nouveau serveur pour la première fois, exécutez une courte vidéo de test à travers tout le flux « récupérer les paramètres → chiffrer → lecture sous licence » avant le traitement par lots.
- Ne modifiez jamais les arguments à la main : -profile est une chaîne chiffrée en Base64 — copiez-la intégralement (pas d'espaces supplémentaires en début/fin, pas de troncature par retour à la ligne).
- Gardez la chaîne d'authentification secrète : WebServiceAuthStr appartient uniquement à la configuration côté serveur ; ne déployez pas d'outils web de démonstration comme GetPackagerEncryptedParams.php sur l'internet public.
- Exigence réseau : pendant le chiffrement, le serveur doit pouvoir atteindre les serveurs DRM-X (International 5.drm-x.com / Chine 5.drm-x.cn) ; autorisez le port sortant 443 si un pare-feu est présent.
Autres tutoriels DRM-X 5.0
Vidéo d'introduction à DRM-X 5.0DRM-X 5.0 est une nouvelle génération de plateforme logicielle de chiffrement. Haihaisoft fournit des tutoriels de démonstration vidéo DRM-X 5.0 courants, y compris une introduction à DRM-X 5.0, un tutoriel de chiffrement vidéo, un tutoriel de chiffrement de pages web et comment intégrer un lecteur vidéo HTML5.
REGARDER MAINTENANT
Comment protéger des vidéos avec DRM-X 5.0 ZJGet pour WindowsCette vidéo montrera comment chiffrer des fichiers sur Windows à l'aide du navigateur ZJGet.
REGARDER MAINTENANT
Comment protéger des vidéos avec DRM-X 5.0 ZJGet pour macOSCette vidéo montrera comment chiffrer des fichiers sur macOS à l'aide du navigateur ZJGet.
REGARDER MAINTENANT
Prise en main de DRM-X 5.0 ZJGet pour WindowsCette vidéo vous montrera comment télécharger, installer et ouvrir des fichiers chiffrés sur Windows à l’aide du navigateur ZJGet.
REGARDER MAINTENANT
Guide de l'utilisateur de DRM-X 5.0 ZJGetGuide de l'utilisateur du navigateur ZJGet. Ce tutoriel vous aidera à maîtriser facilement les fonctionnalités de base et les astuces pratiques du navigateur ZJGet.
REGARDER MAINTENANT
FAQ DRM-X 5.0 ZJGetQuestions fréquemment posées (FAQ) sur l'utilisation du navigateur ZJGet. Cette section rassemble les questions-réponses les plus utiles pour vous aider à surmonter tous les obstacles que vous pourriez rencontrer.
REGARDER MAINTENANTDes questions ?
Nos représentants ont les réponses.
N'hésitez pas à poser des questions sur les produits Haihaisoft, les prix, la mise en œuvre ou tout autre sujet : nos représentants hautement qualifiés sont à votre disposition et prêts à vous aider.
Tél. : +64 27 507 9959 (Nouvelle-Zélande)
QQ : 1279126286 / 994184623
Contactez-nous sur Microsoft Teams
service#haihaisoft.com (remplacez # par @)
Nous contacter