我能够使用AES加密成功地加密和解密视频。它适用于较小的视频,而适用于较大的文件,它为我们提供了内存不足/溢出异常。有没有更好的方法来保护视频文件,只有我的应用程序可以访问它。 我正在使用这个库“ node-forge”
像Netflix和Amazon prime这样的视频流应用程序如何在本地保护视频,这些视频只能通过其应用程序访问。如果他们要解密整个文件,那么过程有多快?
我只是想知道我们是否可以在转换为base-64时破坏文件并破坏文件?
编辑: 这是一个电子学习应用程序,可通过SD卡安全地访问视频。这些视频应受保护,并且只能在我们的应用中播放。
答案 0 :(得分:0)
您需要根据您的要求设计安全措施,这是一个非常复杂的过程,并且需要考虑很多细节。一方面,您需要为您的应用程序设计合适的协议,另一方面,您应尝试使其安全。
例如,为确保设计的适合性,您需要考虑如何播放视频或拥有多少磁盘/内存。在像Netflix这样在下载时播放视频的情况下,他们可能会使用加密算法的流模式。但是正如我所说,在不了解应用程序完整设计的情况下,建议采用某种加密方法是不道德的。
更新:
如果需要简单的加密,建议您使用流传输方法(例如CTR
)。在这种情况下,您可以即时解密内容,而不必先完全解密文件。但是您需要将此内容提供给播放器。如果您还没有编写自己的播放器,这可能是一个小问题。我通过挂钩文件读/写API做到了这一点,并做了您需要的类似操作,所以有可能。
答案 1 :(得分:0)
正如您所说的那样,您已经使用AES成功加密了较小的视频文件,我建议您将所有文件分解为小块(例如512kb / 1Mb的部分file1.part1甚至给出自定义名称,以便您的应用只知道哪个是1,2部分,依此类推),然后对每个部分进行加密。在解密过程中,一个接一个地解密,以获取整个文件,或者如果您可以创建自定义播放器,则立即进行操作。
答案 2 :(得分:0)
如何解决内存限制问题?没有提供有关如何将数据馈送到播放器的信息。但是,对此的一般响应是将文件块流式传输到播放器,而不是整个文件。
如何解决慢速解密问题?使用不需要前面的密码块的加密模式来加密下一个块(例如ctr或ecb)。这样,您可以解密不同的文件部分而无需解密整个文件(相对较快)。
由于您似乎一次要馈送所有数据,因此可以使用“内存映射文件”,并将读取文件数据的方法改写为读取和解密文件数据的方法(在内存中添加解密层)映射文件)。您可以将其作为整个数据传递给播放器。就像您要传递原始的,未加密的视频文件数据一样。