2017-01-14 20 views
1

我正在使用Wowza Streaming Engine,我想用HLS流式方法加密mp4文件,但我不知道如何在PHP中创建AES-128密钥?PHP中的AES-128(WOWZA)。这个怎么做?

Wowza有它自己的genkey,但它是用java编写的,必须在SSH中完成。我想在PHP中这样做,但我不知道它是如何创建密钥的?关于生成密钥的信息在这里 - https://www.wowza.com/docs/how-to-secure-apple-http-live-streaming-aes-128-external-method

你能告诉我如何在PHP中生成这样的密钥?

回答

0

键可以是你想要的,只要它是16个字节(128位),格式为十六进制字符串什么:

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

+0

是的,它的工作原理!多谢,伙计! :) – ShinJii

1

我假设你已经配置wowza并且可以流不加密流。

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

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

  1. 在wowza目录中应该有子目录键,如果需要的话创建它。
  2. 为每个端点将流创建文件命名为:<my_endpoint_name>.key在他们的示例中,他们使用myStream.key。此文件的
  3. 内容是简单的:

cupertinostreaming-aes128-key: secret cupertinostreaming-aes128-url: <url for CLIENT device to get DECRYPTION key>, for example: http://example.com/key_service.php

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