title: Making GCM/CBC ciphers streamable in golang
body: <p>The GCM and CBC AES ciphers in Go can't be used along side with StreamWriter or StreamReader, which forces me to allocate the entire file into memory. Obviously, this is not ideal with large files.</p>
  
  <p>I was thinking of making them streamable, by allocation some fixed size of blocks into memory, and feeding them to GCM or CBC, but I'm assuming that is probably a bad idea, since there must be a reason they've been designed this way.</p>
  
  <p>Can someone explain why these operation modes can't be used without allocating the entire files into memory?</p>