A Good Hash Function is Hard to Find, and Vice Versa

Secure hash functions are the unsung heroes of modern cryptography.
Introductory courses in cryptography often leave them out --- since
they don't have a secret key, it is difficult to use hash functions by
themselves for cryptography.  In addition, most theoretical
discussions of cryptographic systems can get by without mentioning
them.  However, for secure practical implementations of public-key
ciphers, digital signatures, and many other systems they are
indispensable.  In this talk I will discuss the requirements for a
secure hash function and relate my attempts to come up with a "toy"
system which both reasonably secure and also suitable for students to
work with by hand in a classroom setting.