A block cipher mode of operation implements a block cipher with an
arbitrary block length and provides output ciphertext that is always the
same size as the input plaintext. The mode can provide the best possible
security in systems that cannot allow data expansion, such as disk-block
encryption and some network protocols. The mode accepts an additional
input, which can be used to protect against attacks that manipulate the
ciphertext by rearranging the ciphertext blocks. The universal hash
function from Galois/Counter Mode of operation for block ciphers may be
used in an embodiment for hardware and software efficiency.