Напишите код, который реализует схему шифрования stream cipher.
Потоковый шифр обрабатывает поток по одному байту за раз. Каждый байт входного потока xor-ится с байтом из prng и записывается в выходной поток.
Вам нужно реализовать две версии api.
func NewReader(r io.Reader, prng io.Reader) io.Reader
func NewWriter(w io.Writer, prng io.Reader) io.WriterNewReaderпринимает входной потокrи генератор случайных чиселprng.NewReaderвозвращаетio.Reader, который читает поток изrи расшифровывает его с помощьюprng.NewWriterпринимает выходной потокwи генератор случайных чиселprng.NewWriterвозвращаетio.Writer, который шифрует поток с помощьюprngи пишет его вw.
Вы можете считать, что prng никогда не может вернуть ошибку.
- Прочитайте контракт io.Reader и io.Writer в документации.
- То что шифр работает с одним байтом, не значит что нужно передавать в Read() слайс размера 1.
- Функция
NewReaderне должна ничего читать изrиprgn. - Подумайте, почему потоковый шифр в стандартной библиотеке имеет интерфейс cipher.Stream, а не
io.Readerкак у нас. - Для отладки вы можете использовать
iotest.NewReadLoggerиiotest.NewWriteLoggerиз пакета iotest.