PHP中的AES-128(WOWZA)。这该怎么做?

时间:2017-01-14 18:07:05

标签: php encryption aes wowza hls

我正在使用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中生成这样的密钥吗?

2 个答案:

答案 0 :(得分:1)

我假设您已经配置了wowza,并且可以流式传输未加密的流。

为流式传输的所有客户端共享密钥。您无需以任何方式生成它。该文章中的工具只是一个实用程序,它将创建随机密钥和准备文件。但是你可以手工完成。

加密它 - 但仅适用于ios设备! - 执行以下操作:

  1. 在wowza目录中应该有子目录键,如果需要就创建它。
  2. 为每个将流式传输创建名为<my_endpoint_name>.key的文件的端点在他们的示例中,他们使用myStream.key
  3. 此文件的内容很简单:
  4. cupertinostreaming-aes128-key: secret cupertinostreaming-aes128-url: <url for CLIENT device to get DECRYPTION key>, for example: http://example.com/key_service.php

    1. 在该页面的示例部分中,有一个示例脚本,它将使用正确的标头以特定格式输出密钥。将此文件放在该URL下(在此示例中为http://example.com/key_service.php),并用您的秘密替换那里的秘密(DE51A7254739C0EDF1DCE13BBB308FF0)。您可以将其他参数传递给此脚本(请参阅下文)。客户端设备将自动调用此文件(Wowza将指示客户端获取它)以获取密钥。它可以是不同的域,它可以是所有流的一个文件。
    2. 传递给播放列表文件(http://[wowza-ip-address]:1935/live/<my_endpoint_name>/playlist.m3u8的任何其他参数)将传递给您的密钥生成php脚本:您可以传递用户ID或其他形式的身份验证/授权,并使用它来生成验证用户,然后才能生成验证用户返回键 - 请记住该键不能取决于用户 - 它必须与步骤2中的文件相同。
    3. 就是这样。 tl; dr:使用key和url创建密钥文件,该密钥将返回该密钥。在该URL处创建将返回该密钥的文件。

答案 1 :(得分:0)

密钥可以是任何你想要的东西,只要它是16字节(128位)并格式化为十六进制字符串:

$key = strtoupper(bin2hex(random_bytes(16)));