Stream cipher core trait which covers both synchronous and asynchronous ciphers.
Note that for synchronous ciphers
decrypt are equivalent to
fn encrypt(&mut self, data: &mut [u8])
Encrypt data in place.
fn decrypt(&mut self, data: &mut [u8])
Decrypt data in place.