Hasty Pudding Cipher
From Wikipedia, the free encyclopedia
The Hasty Pudding Cipher (abbreviated HPC) is a variable-block-size block cipher which was an unsuccessful candidate in the competition for selecting the U.S. Advanced Encryption Standard. It was designed by Richard Schroeppel and has a number of unusual characteristics for a block cipher:
- Its block size is completely variable, from 1 bit up to arbitrary size. It can even encrypt objects whose size in bits is non-integral. For example, it can encrypt an integer range like 0-100, which is about 6.6 bits.
- Its key length is also variable (but it must be a whole number of bits)
- The encryption operation can include an additional input parameter called a "spice" that (along with the key) selects the permutation computed by the cipher. Changing spices is a lower overhead operation than changing keys, so the availability of the spice makes some interesting unconventional modes of operation possible. The notion of the spice was later formalized (with slightly stronger properties) in the definition of "tweakable" block ciphers by Liskov, Rivest, and Wagner (what HPC called a spice is now generally called a "tweak"). See the block cipher article for some more about tweakable ciphers.