iphone - 如何播放文件名模糊的文件?

标签 iphone objective-c ios ipad mpmovieplayercontroller

我正在制作一个应用程序,将视频下载到文档目录并使用 MPMoviePlayerController 播放它们。为了防止视频从设备上取下并播放,我将混淆文件名。假设我想播放一部标记为“movie.blah”的电影,而实际文件扩展名是“mov”。我怎样才能让这个玩起来?我是否必须暂时将其重命名为“movie.mov”,然后在播放完毕后将其更改回来?感谢您的帮助。

最佳答案

正如 Marc B 所指出的,您不想使用混淆来确保安全。这是一种可行的方法。开销最小(28 字节)。

  1. 定义您自己的可以嵌入标准 .mov 文件的包装文件格式。它可以非常简单,具有固定长度的 header 和指示嵌入电影文件长度的参数。

  2. 在您的自定义文件格式中,使用 AES 和设备硬件中的唯一 key (可能是 CPU 序列号)对数据流进行加密。

  3. 在播放期间,只需根据需要将文件解码到内存缓冲区即可。您应该能够支持部分解密和立即播放。

这样,用户必须复制文件并确定您使用的加密 key ,才能在另一台设备上播放该文件。

布局示例:

------------------
MOV Wrapper Header
4 bytes:  File Type Header ID Magic: "MWHF"
16 bytes: Encryption Algorithm: "AES256"
8 bytes:  64-bit unsigned file length
------------------
Embedded and encrypted mov file

保护文件安全的关键是加密 key 的选择。您不想使用静态 key ,也不想使用可在设备外部访问的 key 。

这个问题可能有助于找到合适的 uuid:iPhone / iPad user profile tracking

关于iphone - 如何播放文件名模糊的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8380002/

相关文章:

android - 哪些广告网络在向用户支付真钱时允许奖励视频?

C# 从 Guid 结合 40Char 十六进制字符串 (UUID) 创建一个 Auth Token

ios - 在 iOS7 中取消交互式弹出手势时如何将数据传递给子 Controller ?

objective-c - 在应用程序启动时执行某些操作?

ios - 通过 itms-apps 打开应用商店

ios - Swift Enum design issues : 1. multiple cases having same value, 2.返回自定义枚举值

iphone - UIPageViewController 与 PageControl

iphone - 支持不同大小单元格的 iOS GridView

ios - 如何根据swift中的条件替换方法名称?

ios - Swift:NSDecimalNumber .decimalNumberByAdding 不工作,但没有失败