2012-03-06 107 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