A hash function is a mathematical function that converts a variable length input into a fixed length output called a hash value. Hash functions are commonly used to verify data integrity and authenticate digital signatures. They have several key properties including producing identical hashes for identical inputs, being very difficult to reverse to find the original input, and being collision resistant such that it is very unlikely two different inputs will produce the same hash. Common uses of hash functions include storing passwords securely, digital signatures, and file integrity verification.