Лабораторная 8

8. Concurrency
Разработать библиотеку, принимающую два входных потока (InputStream):
данные и ключи, и выходной поток (OutputStream), в который он
записывает данные, зашифрованные методом XOR.
Данные и ключи могут приходить с разной скоростью и могут быть разной
длины. Признак конца данных или ключа – нулевой байт.
Перед тем, как считать следующий после нулевого байт данных или ключей,
необходимо удостовериться, что оба потока дочитаны до нулевого байта и в
выходной поток выданы последние принятые данные, зашифрованные последним
принятым ключом.