Существует ли более эффективная C# реализация CryptoStream для потоковой расшифровки больших файлов - PullRequest
2 голосов
/ 26 апреля 2020

Я использую LibVL C и Unity для воспроизведения локально хранящихся зашифрованных 360 видео. Пакет Unity от VL C имеет функцию воспроизведения контента через поток C#. Я использую FileStream, завернутый в CryptoStream, чтобы это работало. Это работает для видео средних и малых размеров, однако, видео с большими битрейтами и большими битами не воспроизводятся должным образом с моей текущей реализацией.

Я использую следующий код для создания расшифрованного CryptoStream, который передается в VL C. Путь указывает на правильно зашифрованный файл, хранящийся на устройстве.

AesCryptoServiceProvider aesCryptoServiceProvider = new AesCryptoServiceProvider();
FileStream crpytoFileStream = new FileStream(path, FileMode.Open);
CryptoStream cryptoStream = new CryptoStream(crpytoFileStream, aesCryptoServiceProvider.CreateDecryptor(Key, IV), CryptoStreamMode.Read);

Я использую AesCyptoServiceProvider, потому что я знаю, что это более быстрая реализация криптопотока. Я также попробовал некоторые другие варианты, показанные ниже, однако я не увидел значительного улучшения по сравнению с параметрами по умолчанию для AesCryptoServiceProvider.

aesCryptoServiceProvider.BlockSize = 128;
aesCryptoServiceProvider.KeySize = 256;
aesCryptoServiceProvider.Mode = CipherMode.ECB;
aesCryptoServiceProvider.Padding = PaddingMode.ANSIX923;

Я провел немало исследований и не смог найти определенные способы ускорения CryptoStream. Я не знаю, есть ли лучший способ обернуть мои потоки или есть что-то, что я пропускаю. Любая помощь приветствуется, спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...