2012-03-06 65 views
3

时,我想“跳”到一个位置,而流加密的视频我有这个问题跳绳/寻求与RC4加密定位

所以我有什么是:

的HTTP流媒体服务器(本地,在Android设备上运行) 原生的Android媒体播放器 RC4加密工具

基本上,我存储的SD卡的加密视频,我想用我的HTTP流媒体服务器流式传输到媒体播放器。服务器已经通过在使用RC4加密工具将字节写出到OutputStream之前转换字节,即时进行加密,这实际上是可行的。

对文件进行加密并不成问题 - 只需对加密实用程序的生成位运行整个文件 - 我只是在尝试播放视频时执行该操作。问题是当我想要“寻求”视频中的位置时,例如我想查看2小时电影的中间部分。我目前正在做的,尽管速度很慢,但它的工作原理是重置RC4加密实用程序,并提供相当于我在视频中跳转到的持续时间。

请原谅我,如果我不健全在我的解释很清楚在这里,但如果你真的与RC4加密与工作流,你应该也遇到了同样的问题。

所以现在的问题是,是否有可能,如果是,我怎么能“力求”在我的RC4位发生器的位置,而不经过所有,我只是跳过不必要的字节?

每个视频的大小都在500mb左右,所以如果我寻求接近视频结束的位置,那么在能够传输正确数据之前,大约需要500,000,000次无用比特迭代。

回答

5

没有,RC4 algorithm是不可搜索。密钥流生成的每次迭代包括使用两种元素的状态互换,在某种程度上,是很难再现,而无需实际执行所有中间互换置换关键依赖小号置换。

这本来是微不足道的完成你想要什么,如果你已经使用例如AES在CTR mode中,因为CTR模式被设计为可完全寻找。

编辑: 但是,有一点,如果内存是不是稀缺的,你可以做的,是使用你自己的RC4实现(见链接,这是很容易做到),并缓存的内部状态(258个字节每个位置总共)。如果用户来回跳动很多,这将有所帮助,但用户第一次跳过时,必须生成完整的RC4密钥流到该位置。

+0

也这么想。但如果“很难复制”,那可能意味着它不是不可能的。 +1,如果没有人在2天内有更好的表现,那就是你的。 :) – josephus 2012-03-06 10:30:10

+0

该算法已经存在了大约25年,并收到了大量的密码分析。我所写的原因并不是因为我认为有一种可行的方法可以在不变的时间内使其可行,而仅仅是因为我不能排除一些已知的弱点可能会使我们能够找到一个子线性算法比实际迭代密钥流生成器稍好。如果有一种简单的方法可以使RC4支持随机访问,那么将会有关于它的研究论文。 – 2012-03-06 10:50:53

+1

OTOH,你可以定期兑现内部状态。 – 2012-03-06 11:00:10