ios - 为 HTTP Live Streaming 加密/解密部分文件

标签 ios aes http-live-streaming drm playready

是否可以使用行业标准的加密技术(例如 PlayReady 和 AES-128)为 HTTP 直播流加密/解密较小的文件片段?

我不知道 iOS 中的默认 HLS 实现如何与 AES-128 加密配合使用 - 即,它是否仍然能够逐步下载部分片段 (TS) 和流式传输文件?还是必须下载完整文件,解密全部内容,然后才开始播放?

在我接触过的一些 PlayReady 客户端中,我观察到后一种方法(先完整下载)。但这似乎是为了获得安全性而对播放延迟做出的可怕妥协(也许没有办法解决)。

对这个主题的一些了解会很有帮助。谢谢!


P.S:引用技术文档或手册会很棒!

最佳答案

AES 使用 block 大小为 128 位的 block 密码。因此,如果解密程序知道 key 和 IV,它可以从第一个 block 返回明文——没有理由先解密整个段/片段。

我猜您看到的 PlayReady 实现只是基于文件执行,因为这样实现起来稍微容易一些。但没有技术原因要求客户端在开始解密之前需要检索整个文件。

您可以通过使片段/段非常大并检查客户端行为来验证客户端正在做什么。

通过快速搜索,我找到了这个正在解密 HLS 的项目,内容如下: https://code.google.com/p/mlbtv-hls-nexdef/source/browse/trunk/mlb.c

关于ios - 为 HTTP Live Streaming 加密/解密部分文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16261766/

相关文章:

r - ggplot2 - 拆分一个图例(两个色标)并删除另一个

flutter - Android 上的 Diffie Hellman 和 AES

ios - 重复符号链接(symbolic link)器错误

ios - 正在创建 UIViewControllers 但未在状态恢复中显示

java - C/C++ 与 Java 中的 DES 加密

Android HLS - 源代码在哪里?

ffmpeg - Chromecast HLS : Unable to derive timescale

ios - MPMoviePlayerController 仅在调用两次时播放。仅在 iOS 4 中出现

objective-c - Objective-C : Drag and Drop Multiple Images

ios - 如何使用 ASIHTTP 解析 XML