【发布时间】:2012-11-01 05:48:23
【问题描述】:
我需要下载一个大的视频文件并将其保存到硬盘上。 然后我需要使用 XAML 媒体元素播放此视频文件。 但该文件必须使用 AES 256 算法和加密密钥进行加密。任何时候都不得将未加密的数据写入硬盘。
例如我可以有一个流,可以将未加密的数据转换为文件,反之亦然。
WinRT 有一个API,它允许我加密缓冲区。但是如果文件很大,这将不起作用。 WinRT 有一个 API 允许加密流DataProtectionProvider。但是有一个神奇的 protectionDescriptor 参数,我没有找到关于如何指定算法和密钥的信息。
我能够做的是在 C# 中实现 IRandomAccessStream。它可以工作,但速度很慢。
请不要提供与 WinRT 平台无关的答案。任何其他帮助将不胜感激。
【问题讨论】:
-
您能否澄清一下“在 C# 中实现 IRandomAccessStream”的含义?您是否找到了一种直接对流使用对称加密的方法?我使用一种方法,它以块的形式读取流,逐块加密并将结果写入目标流。这甚至适用于非常大的文件并且不会太慢。
-
我已经在我的实现中解决了这个问题。现在它可以快速运行:读取和写入操作。
-
很遗憾不能分享源码。听起来是一个非常好的解决方案。你能至少分享一些你是如何解决这个问题的信息吗?
标签: cryptography windows-runtime