Hashes and theory of their cracking
Of course there is no such theory, but practice breaking a hash is fascinating for the researcher.
Currently in netdev@ people started lengthy discussion about new hash for the interface name and (optionally?) for dentry hash, or I just misunderstood the latter.
Anyway there is more than a dozen of different algorithms tested for deviation and speed. It is very interesting to find out which one will be selected.
Actually it is only interesting from the single side – how to break it. By breaking I mean creating application which can generate input data which will produce the same hash value after processed by the selected algorithm.
Looking forward for the new hash :)