Я никогда не слышал о многопоточном CryptoStream в .NET, однако думаю, что это зависит от вашего режима шифрования.
Если режим шифрования ECB, конечно, вы можете легко сделать его многопоточным вручную с помощью Parallel.For или ForEach.
С CBC или любым другим режимом шифрования с обратной связью маловероятно, что вы сможете сделать его параллельным, если вы не будете использовать несколько векторов инициализации.
Для режима ECB:
- Разделить ваши данные на несколько байтовых массивов (скажем, вы шифруете 1280 байтов с 10 потоками, которые разбивают данные на 10 байтовых массивов, которые содержат 0,127 байт, 128 ... 2,55 байт и т. Д., Каждый массив должен содержать целое число блоков).
- Используйте Parallel.For или ForEach для циклического перебора всех 10-байтовых массивов (например, создайте экземпляр List и передайте его Parallel.ForEach в качестве аргумента).
- Создание 10 экземпляров шифратора / расшифровщика Rijndael с помощью SymmetricAlgorithm.CreateEncryptor / SymmetricAlgorithm.CreateDecryptor
- Шифровать каждую часть данных в отдельном потоке.
- Снова объединить данные в массив байтов.
Итак, моя идея не в том, чтобы использовать CryptoStream, вместо этого вы должны вызывать API шифрования и напрямую работать с байтами простого текста.