Potrzebuję pobrać duży plik wideo i zapisać go na dysku twardym. Następnie należy odtworzyć ten plik wideo, używając elementu multimedialnego XAML. Plik musi być jednak zaszyfrowany przy użyciu algorytmu AES 256 i klucza szyfrowania. Nieszyfrowane dane nie mogą być zapisywane na dysku twardym w żadnym momencie.Szyfrowanie strumienia WinRT
E.g. Mogę mieć strumień, który może przekształcić niezaszyfrowane dane w plik i na odwrót.
WinRT ma API, który pozwala mi szyfrować bufory. Ale jeśli plik jest duży, to nie zadziała. WinRT ma API, które pozwala szyfrować strumienie DataProtectionProvider. Ale istnieje magiczny parametr protectionDescriptor i nie znalazłem informacji o tym, jak określić algorytm i klucz.
To, co udało mi się zrobić, to zaimplementować IRandomAccessStream w języku C#. Działa, ale działa wolno.
Proszę nie udzielać odpowiedzi, które nie są związane z platformą WinRT. Każda inna pomoc byłaby doceniona.
Czy możesz wyjaśnić, co masz na myśli mówiąc o "implementacji IRandomAccessStream w języku C#"? Czy znalazłeś sposób na bezpośrednie użycie szyfrowania symetrycznego w strumieniach? Używam metody, która czyta strumień w porcjach, szyfruje porcję przez porcję i zapisuje wynik do strumienia docelowego. Działa to nawet w przypadku bardzo dużych plików i nie jest zbyt powolne. –
Rozwiązałem problem w mojej implementacji. Teraz działa szybko zarówno dla operacji odczytu i zapisu. –
Szkoda, że nie można udostępnić kodu źródłowego. Brzmi jak bardzo dobre rozwiązanie. Czy mógłbyś chociaż podzielić się niektórymi informacjami, w jaki sposób rozwiązałeś problem? –