Every modern symmetric encryption algorithm finds ways to
work in two basic operations: diffusion and substitution.
That is, the content of a cipher text both replaces the bits
and bytes of the plain text with different bits and bytes
(substitution), and moves those replaced bits and bytes to
different locations in the cipher text (diffusion).
Unlike old-fashioned hand-calculated ciphers, modern
algorithms inevitably operate primarily at a bit level.
Modern algorithms usually do involve some transforms at the
nibble, byte, word, or block level; but these larger
transforms usually break down and rearrange the bits within
these blocks in other parts of the algorithm.
Most modern algorithms produce cipher texts of exactly the
same size as the original plain text. Maybe a bit or two
here and there is added for identification or error
correction, but overall, bits of plain text have a one-to-one
relationship with bits of cipher text.
A good algorithm is one that is entirely key-dependent,
whether 1's in the plain text are represented by 0's
or by 1's in the cipher text. In addition, with such algorithms one
cannot quite tell where in the cipher text to find a
particular diffused plain text bit (except by knowing the key,
and thereby figuring out just where bits have been pushed).