<p>I'm pretty new to both C++ and Block Cipher encryption, and I am currently in the process of writing a decryption function for AES (16 byte seed / 16 byte blocks). All is going well, but my total data size is not always a multiple of my block size. I'm wondering what the best way to handle leftover data at the end of my data.</p>

<p>I'm using Crypto++ for the AES library.</p>

<p>The <code>ProcessBlock()</code> function takes an Input and Output char array. I'm assuming it is expecting them to be at least big enough as the block size. </p>

<p>What would be the best way to process all 16 byte blocks in a block cipher, and then also process the leftover data? </p>

What you want is a padding system.
Check out this CodeProject article on Crypto++
:
When a message is not a multiple of
  the cipher's block size, ECB or CBC
  mode messages must be padded. The
  method and values of padding are a
  source of problem with respect to
  interoperability between Cryptographic
  libraries and APIs. As Garth Lancaster
  points out, if you're not aware of the
  particulars of padding, use the
  StreamTransformationFilter. In this
  case, the Crypto++ filter will pad for
  you.