otp

package
v0.0.0-...-3606079 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 9, 2020 License: MIT Imports: 3 Imported by: 0

README

otp

Напишите код, который реализует схему шифрования stream cipher.

Потоковый шифр обрабатывает поток по одному байту за раз. Каждый байт входного потока xor-ится с байтом из prng и записывается в выходной поток.

Вам нужно реализовать две версии api.

func NewReader(r io.Reader, prng io.Reader) io.Reader
func NewWriter(w io.Writer, prng io.Reader) io.Writer
  • NewReader принимает входной поток r и генератор случайных чисел prng. NewReader возвращает io.Reader, который читает поток из r и расшифровывает его с помощью prng.
  • NewWriter принимает выходной поток w и генератор случайных чисел prng. NewWriter возвращает io.Writer, который шифрует поток с помощью prng и пишет его в w.

Вы можете считать, что prng никогда не может вернуть ошибку.

Замечания

  • Прочитайте контракт io.Reader и io.Writer в документации.
  • То что шифр работает с одним байтом, не значит что нужно передавать в Read() слайс размера 1.
  • Подумайте, почему потоковый шифр в стандартной библиотеке имеет интерфейс cipher.Stream, а не io.Reader как у нас.
  • Для отладки вы можете использовать iotest.NewReadLogger и iotest.NewWriteLogger из пакета iotest.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewReader

func NewReader(r io.Reader, prng io.Reader) io.Reader

func NewWriter

func NewWriter(w io.Writer, prng io.Reader) io.Writer

Types

This section is empty.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL