2012-11-12 13 views
6

大きなビデオファイルをダウンロードしてハードディスクに保存する必要があります。 次に、このビデオファイルをXAMLメディア要素を使用して再生する必要があります。 ファイルは、AES 256アルゴリズムと暗号化キーを使用して暗号化する必要があります。暗号化されていないデータは、いつでもハードドライブに書き込まれてはなりません。WinRTストリームの暗号化

など。暗号化されていないデータをファイルに変換したり、その逆の変換を行うストリームを作成できます。

WinRTにはバッファを暗号化できるAPIがあります。しかし、ファイルが大きい場合、これは動作しません。 WinRTにはストリームを暗号化するAPIがありますDataProtectionProvider。しかし、魔法のprotectionDescriptorパラメータがあり、アルゴリズムとキーを指定する方法に関する情報は見つかりませんでした。

私ができることは、C#でIRandomAccessStreamを実装することでした。それは動作しますが、それは遅いです。

WinRTプラットフォームに関連しない回答は提供しないでください。他の助けがあれば幸いです。

ここ
+1

「C#でIRandomAccessStreamを実装する」という意味を明確にしてください。直接ストリームで対称暗号化を使用する方法を見つけましたか?チャンクでストリームを読み取り、チャンクでチャンクを暗号化し、その結果をデスティネーションストリームに書き込むメソッドを使用します。これは非常に大きなファイルでも機能し、遅すぎるものではありません。 –

+0

私の実装でこの問題を解決しました。これは、読み取り操作と書き込み操作の両方で高速に機能します。 –

+0

ソースコードを共有することはできません。非常に良い解決策のように思えます。少なくとも問題をどのように解決したのでしょうか? –

答えて

0

例: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

+0

AES 256と暗号化キーが必要だと指定する方法は? –

+0

DataProtectionProviderを使用すると、バッファを暗号化するために使用されるAPIであるCryptographicEngineのみを理解できるようにすることはできません。DataProtectionProviderは、.NET Framework File.Encrypt(http://msdn.microsoft.com/en-us/library)に似ています。 /system.io.file.encrypt.aspx)。 – Rafael

+0

MSDNは言う(質問からのリンクを参照):対称キーを使用してデータを保護することができます。これは、たとえば、Live IDなどの非ADプリンシパルにデータを保護するために機能します。 –

0

IRandomAccessStreamを実装することで、データをオンザフライで暗号化または復号化することができましたAES_CBC_PKCS7アルゴリズム。シーケンシャル書き込みとランダムアクセス読み取りをサポートしています。 残念ながら私はソースコードを共有できません。

+0

あなたは少なくとも私達に手がかりを与えることができますか?またはhttps:// stackoverflowを参考にしてください。com/questions/28677469/implement-a-custom-irandomaccessstream? –

関連する問題