这些文件似乎没有提供答案..
微软试图清楚地解释这个主题,但仍然模棱两可。至少在我们的情况下。
我们有一个加密的 MP4 流。它包含“SampleEncryptionBox”es 或“PIFF”框,其中包含用于加密块的 8 字节 = 64 位初始化向量。但是:用于解密“AES-128 计数器模式”加密视频数据的实际“计数器块”是128-bit。我不知道到底把IV放在哪里!!
PIFF 文档说 16 字节 IV 是 AES-CTR 模式的整个计数器块(显然)。此外,对于AES-ECB 模式(第 17 页),将 8 字节 IV 放在计数器块的开头。但是对于AES-CTR 模式下的 8 字节 IV,它什么也没说!
这个 RFC 文档说 128 位应该包括 4 字节 Nonce + 8 字节 IV + 4 字节计数器。Nonce 值应取自为主 128 位 AES 密钥提供的额外 4 个字节。我只能通过 Protection Header 获得 128 位的密钥,我应该从哪里获得 4 字节的 Nonce?
任何一点额外的知识都将受到高度赞赏。