Обратите внимание, что XOR будет невероятно легко сломать, если другой конец знает что-либо об исходных данных. Если он знает правильные 8 байтов в любой позиции, ваше «шифрование» немедленно нарушается. Вы действительно действительно уверены, что хотите это сделать? Создание собственной схемы шифрования - это почти всегда плохая идея - есть ли причина, по которой вы не хотите использовать один из многих алгоритмов шифрования, встроенных в платформу? Конечно, используйте аппаратный ключ для получения ключа - но затем используйте обычный CryptoStream
.
Однако, если вы действительно хотите это сделать, есть два очевидных варианта:
Построить потоковую оболочку, да. Если бы вам не нужно было поддерживать асинхронные операции, я бы этого не сделал - это усложнит ситуацию. Записать реализацию потока, которая передает другой поток для прокси, а также значение long
для XOR, а затем всякий раз, когда вы читаете или записываете данные, применяете XOR.
Построить реализацию ICryptoTransform
. Тогда вы потенциально можете заставить CryptoStream
выполнить всю тяжелую работу с точки зрения потоковой работы - вам просто нужно знать, как преобразовывать блок за раз. Я считаю, что должно быть довольно простым, но я не могу сказать, что когда-либо делал это сам.