Cryptography and hash functions