I am not sure whether I need to call Flush() on the used objects if I write something like this:
Flush()
using (FileStream...) using (CryptoStream...) u
As soon as you leave the using block’s scope, the stream is closed and disposed. The Close() calls the Flush(), so you should not need to call it manually.