## 2 Related Work
### Cryptographic Hash Functions, Their Properties and Attacks  
A hash function is a function that can be used to map data (message) of arbitrary size to fixed-size values. This concept of hashing was introduced for the first time by [PERSON] [15] in 1958. However, the security was not taken into consideration. In fact, its purpose was not to secure passwords or to ensure data integrity but to organize information so that it is easy for a computer to find. Hash functions are extensively used in different research fields, such as neighbor search, particuology and computer graphics [16; 17]. Cryptographic hash functions are a more sophisticated variant of a hash function with additional properties suitable for cryptographic applications.  
The first and most important property is the collision resistance. According to this property, given a hash function \(h\), it should be difficult to find two different messages \(m_{1}\) and \(m_{2}\) such that \(h(m_{1})==h(m_{2})\). Finding hash collisions is important to password security, as a hash function, which lacks the property of collision resistance, cannot be used for password hashing, and the task of cracking passwords becomes easier for malicious actors. That is, if a hash function is not collision resistant, then an attacker will no longer need to find a specific password. Instead, any password that corresponds to the same hash value will work. Some researchers found collisions for different hash functions like MD5, SHA-1, and others [18; 19; 20].  
Another property commonly discussed in the literature on cryptographic hash functions is the pre-image resistance. This property states that given a hash value \(y\) and a hash function \(h\), it should be difficult to find any message \(m\) such that \(y~{}=~{}h(m)\). Hash functions that lack this property are vulnerable to preimage attacks. This vulnerability has been explored in research, such as in the work of [PERSON] et al. [21], who looked for pre-images of the MD5 hash function using propositional logic inspired by the concept of boolean satisfiability problems. Another attempt was made by [PERSON] et al. [22] for the DHA-256 hash function, which was proposed at the Cryptographic Hash Workshop organized by the National Institute of Standards and Technology (NIST) in November 2005. This property is also related with the concept of a one-way function, which states that cryptographic hash functions should be easy to compute on every input but hard to invert given a random output. [PERSON] [23] showed that the first two rounds out of three of MD4 are not one-way, and, as a result, a pre-image can be found efficiently.  
The last and final property of cryptographic hash functions is the second pre-image resistance. Given an input \(m_{1}\), it should be difficult to find a different input \(m_{2}\) such that \(h(m_{1})==~{}h(m_{2})\) for a given hash function \(h\). This property is also known as weak collision resistance. Hash functions that lack this property are vulnerable to second-preimage attacks. Several studies have explored the importance of second pre-image resistance in cryptographic hash functions that fail to meet this property. For example, [PERSON] et al. [24], [PERSON] et al. [25] and [PERSON] et al. [26] presented second preimage attacks on different hash functions including RIPEMD-160, LUX and other cryptographic hash functions.  
Lack of any of these three critical properties is an indication of a weak and insecure hash function. Therefore, when choosing a cryptographic hash function for security applications, it is important to ensure that it exhibits all these properties to safeguard against potential attacks. At the same time, it is important to notice the difference between attacks on cryptographic hash functions and password cracking attacks. Those are two separate types of attacks; the first is used to exploit vulnerabilities in the hash algorithm itself, and the second is used to recover or guess the original password from the hash value, which is the output of a cryptographic hash function.