Applications Of Hash Functions In Cryptography