A hash is similar to a one-way function, but rather than
being a total function (one whose inverse is also a function),
a hash takes a long message and produces a comparatively
short output. Error-checking codes (ECC), such as CRC32, are
a type of hash. A CRC32 hash is unlikely to match a
message that is a slight corruption of the correct message.
ECCs are great for detecting line noise, but cryptographic
hashes make a more stringent demand.
With a cryptographic
hash it is (believed to be) computationally infeasible to
find a message that produces a given hash, except by possessing
the message that first produced the hash. Typically,
cryptographic hashes have outputs that are 128 bits or longer
(quite a bit more than the 32 bits of CRC32). Cryptographic
hashes are also sometimes known as "message digests",
"fingerprints", "cryptographic checksums", or "message
integrity checks." For most cryptographic hashes, the input
can be a message of any length. It should be easy to see
how Alice could use a cryptographic hash in the above
scenario: She can get by with publishing just 128 or
160 bits (this is especially helpful if she has written The Great
American Novel rather than a haiku).