使用React Native在SD卡中加密视频文件

14

我成功地使用AES加密算法对视频进行了加密和解密。对于较小的视频,它的运作很好,但对于大文件,会出现内存溢出异常。有没有更好的方法来保护视频文件,使只有我的应用程序可以访问它。

像Netflix和Amazon Prime这样的视频流应用如何在本地保护视频,以便仅通过它们的应用程序访问。如果它们正在解密整个文件,那么这个过程为什么如此快速?

我只是想知道是否可以破坏文件并在转换为base-64时进行解密?

编辑: 这是一个电子学习应用程序,通过SD卡访问视频。这些视频应该是安全的,并且只能在我们的应用程序中播放。


你用什么模式加密视频?CBC吗? - Afshin
你好,请问您能分享用于加密文件的代码吗? - Nabeel K
2个回答

1
你需要根据自己的要求设计安全措施,这是一个非常复杂的过程,你需要考虑很多细节。一方面,你需要为应用程序设计合适的协议,另一方面,你应该尽量使其安全。
例如,在设计适当性方面,您需要考虑如何回放视频或您拥有多少磁盘/内存。在像 Netflix 这样播放视频时同时下载的情况下,他们可能会使用流加密算法。但是,正如我所说,如果不了解应用程序的完整设计,则建议加密方法有点不道德。
更新:
如果你需要简单的加密,我建议你使用流方法(如 CTR)。在这种情况下,你可以实时解密内容,而不是先完全解密文件。但你需要将这个内容输入到你的播放器中。如果你没有编写自己的播放器,这可能会有些问题。我曾经通过挂钩文件读/写 API 来完成此操作,并做了你需要的类似的事情,所以这是可能的。

@Afshin 流式加密和解密已经实现。编码格式使用的是base64。但我找不到一个可以帮助我流式播放数据的播放器。你有什么想法吗? - Ron Astle Lobo

0

根据您所说,您已成功使用AES加密了较小的视频文件,我建议您将所有文件分解成小块(例如512kb / 1Mb的部件file1.part1,甚至提供自定义名称,以便您的应用程序只知道哪一个是第1个、2个等),然后对每个文件进行加密。在解密过程中,按顺序逐个解密,以获取整个文件,或者如果您可以创建自定义播放器,则可以实时处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接