A cryptographic hash function is a function that takes a string of bytes of variable length and returns a fixed-length digest such that it is extremely difficult to find two inputs that yield the same output or find the original input given an output. It is also desirable for a small change in input to yield a large change in output. Common hash functions include MD5, SHA-1, SHA-256, SHA-512, and RIPEMD.