4

已经两个星期了,我们还在跑腿。

情节,

我们设法使用受此启发的本地 Web 服务器流式传输加密视频。关联

问题是在寻找时(视频的进度条挂起,对于普通文件同样适用)。CipherInputStream.Seek(pos) 不会在缓冲区之外寻找。

CipherInputStream cis = null;
...
long skipped = cis.skip(cbSkip);

对于跳远,skipped 始终为零。关联

所以我们使用 BlockSize 1(弱加密),这样搜索就会变得隐含。

我相信 ARC4 不再包含在 android Ref Link中。(请告诉我我被误导了),或者是否有任何其他加密(由 android 支持)具有块大小 1

作为 CipherInputStream 的构造函数,

if (!(isStream = cipher.getBlockSize() == 1))

这不会覆盖超类行为。

所以只剩下很少的选项,比如包括ARC4(或其他一些自定义字节输入字节输出加密)进行搜索。

有没有机会让我们的生活变得简单。我们只需要对媒体进行某种加密,以减轻临时用户的负担。(高速断路器)

任何一个答案都可以解决这个问题:

  • 是否有任何块大小为 1 的 android 支持的算法
  • 或者您是否有指向类似本地解密流媒体解决方案的链接,这些解决方案是可搜索的。
  • 还是我们只有DIY选项。
4

2 回答 2

3

尝试计数器模式加密 (CTR)。计数器模式加密也用于例如磁盘加密:它不依赖于任何先前的块,如 CBC。您可能必须跳转到特定块,然后跳转到块中的特定字节。如果这是您所追求的,您应该使用 GCM 进行“完整性控制”。看看 bouncy castle 中关于这些算法的可用内容(有点警告:在 Android 中使用 AES 密钥可能会遇到麻烦,因为该库已(严重)集成到 Android 中。

于 2011-05-01T01:41:24.367 回答
0

只需使用 AES/CTR/NOPPADING 算法进行加密

于 2020-11-05T08:55:08.697 回答