我正在使用Wowza Streaming Engine,我想在HLS流方法中加密mp4文件,但我不知道如何在PHP中创建AES-128密钥?
Wowza有自己的genkey,但是它在java中,必须在SSH中完成。我想在PHP中这样做,但我不知道它是如何创建密钥的?有关生成密钥的信息在这里 - https://www.wowza.com/docs/how-to-secure-apple-http-live-streaming-aes-128-external-method
你能告诉我如何在PHP中生成这样的密钥吗?
答案 0 :(得分:1)
我假设您已经配置了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脚本:您可以传递用户ID或其他形式的身份验证/授权,并使用它来生成验证用户,然后才能生成验证用户返回键 - 请记住该键不能取决于用户 - 它必须与步骤2中的文件相同。就是这样。 tl; dr:使用key和url创建密钥文件,该密钥将返回该密钥。在该URL处创建将返回该密钥的文件。
答案 1 :(得分:0)
密钥可以是任何你想要的东西,只要它是16字节(128位)并格式化为十六进制字符串:
$key = strtoupper(bin2hex(random_bytes(16)));