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 do not 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 article, the author discusses the requirements for a secure hash function and relates his attempts to come up with a “toy” system which is both reasonably secure and also suitable for students to work with by hand in a classroom setting.