Я использую Wowza Streaming Engine и хочу зашифровать файлы mp4 потоковым методом HLS, но я не знаю, как создать ключи AES-128 в PHP?
У Wowza есть свой собственный genkey, но он в java и должен быть сделан в SSH. Я хочу сделать это на PHP, но я не знаю, как он создает ключ? Информация о генерации ключей здесь — https://www.wowza.com/docs/how-to-secure-apple-http-live-streaming-aes-128-external-method
Можете ли вы сказать мне, как генерировать такие ключи в PHP?
Ключ может быть любым, если вам нужно, если он 16-байтовый (128 бит) и отформатирован в виде шестнадцатеричной строки:
$key = strtoupper(bin2hex(random_bytes(16)));
Я предполагаю, что вы настроили wowza и можете транслировать поток без шифрования.
Ключ является общим для всех клиентов, которые его передают. Вам не нужно генерировать это каким-либо образом. Инструмент из этой статьи — это просто утилита, которая создаст случайный ключ и подготовит файл. Но вы можете сделать это вручную.
Чтобы зашифровать его — но только для устройств ios! — сделать следующее:
<my_endpoint_name>.key
В своем примере они используют myStream.key
,cupertinostreaming-aes128-key: secret
cupertinostreaming-aes128-url: <url for CLIENT device to get DECRYPTION key>, for example: http://example.com/key_service.php
http://example.com/key_service.php
) и замените секрет оттуда (DE51A7254739C0EDF1DCE13BBB308FF0
с твоим секретом. Вы можете передать дополнительные параметры этому сценарию (см. Ниже). Этот файл будет вызываться клиентским устройством автоматически (Wowza проинструктирует клиента о его получении), чтобы получить ключ. Это может быть другой домен, и это может быть один файл для всех ваших потоков. (http://[wowza-ip-address]:1935/live/<my_endpoint_name>/playlist.m3u8
) будет передан вашему ключу, генерирующему php-скрипт: вы можете передать идентификатор пользователя или какую-либо другую форму аутентификации / авторизации и использовать ее для генерации проверяемого пользователя и только затем для возврата ключа — помните, что ключ не должен зависеть от пользователя — он должен быть так же, как в файле на шаге 2. И это все.
tl; dr: создать файл ключа с ключом и URL-адресом, откуда этот ключ будет возвращен. Создайте файл по этому URL, который вернет этот ключ.