【问题标题】:WinRT stream encryptionWinRT 流加密
【发布时间】:2012-11-01 05:48:23
【问题描述】:

我需要下载一个大的视频文件并将其保存到硬盘上。 然后我需要使用 XAML 媒体元素播放此视频文件。 但该文件必须使用 AES 256 算法和加密密钥进行加密。任何时候都不得将未加密的数据写入硬盘。

例如我可以有一个流,可以将未加密的数据转换为文件,反之亦然。

WinRT 有一个API,它允许我加密缓冲区。但是如果文件很大,这将不起作用。 WinRT 有一个 API 允许加密流DataProtectionProvider。但是有一个神奇的 protectionDescriptor 参数,我没有找到关于如何指定算法和密钥的信息。

我能够做的是在 C# 中实现 IRandomAccessStream。它可以工作,但速度很慢。

请不要提供与 WinRT 平台无关的答案。任何其他帮助将不胜感激。

【问题讨论】:

  • 您能否澄清一下“在 C# 中实现 IRandomAccessStream”的含义?您是否找到了一种直接对流使用对称加密的方法?我使用一种方法,它以块的形式读取流,逐块加密并将结果写入目标流。这甚至适用于非常大的文件并且不会太慢。
  • 我已经在我的实现中解决了这个问题。现在它可以快速运行:读取和写入操作。
  • 很遗憾不能分享源码。听起来是一个非常好的解决方案。你能至少分享一些你是如何解决这个问题的信息吗?

标签: cryptography windows-runtime


【解决方案1】:

此处的示例:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/windows.security.cryptography.dataprotection.dataprotectionprovider.aspx,为您提供有关 protectionDescriptor 的信息,简而言之,它标识将提供加密密钥的用户或组或计算机,在您的示例中:

String strDescriptor = "LOCAL=user";

及以后:

DataProtectionProvider Provider = new DataProtectionProvider(strDescriptor);

这意味着密钥的提供者将是当前用户,从这个类的外观来看,它似乎是为了保护用户的信息,可能使用用户自己生成的证书和默认算法,它不能被覆盖,因此如果您寻找一种方法来明确指定密钥和算法,您可能会遇到CryptographicEngine

【讨论】:

【解决方案2】:

我能够实现使用 AES_CBC_PKCS7 算法即时加密或解密数据的 IRandomAccessStream。它支持顺序写入和随机访问读取。 很遗憾,我无法分享源代码。

【讨论】:

猜你喜欢
  • 2013-02-07
  • 1970-01-01
  • 2016-03-30
  • 2017-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多