Padding handles the issue of your plaintext being potentially shorter than a multiple of the block size. So you add as much padding to the end of the entire plaintext as is necessary to bring it up to the desired length or an entire block and you include information about how to remove it. Imagine for a moment .encrypt() would add padding to the given *piece* of plain text, how would you, given the entire plain text, decide what is padding and what isn't?